1、ComboBox setValue() 问题
有时 combobox setValue()不起作用,或者将值通过转换成model对象后,再向combobox设置值时,下端出现红线。
这个是因为combobox 的 store 可选列表还未初始化的原因,也就是store还未load。
解决办法:
(1)通过EXTJS 4的mvc结构,在controller中的 store 属性配置中加上 combobox 的 store类。如下:
Ext.define('Tms.controller.MyController', {
/**
* 别名
* @type String
*/
alias : 'widget.myController',
// 继承
extend : 'Ext.app.Controller',
// 这里配置的store都会预先加载
stores : ['ComboboxStore']
});
(2)在store的load事件中完成setValue()。如下:
combobox.store.on('load',function(){// 在这里未combobox设置值});
2、EXTJS项目发布问题
下载ext部署工具,SenchaSDKTools-1.2.3。
部署过程中遇到了不少问题:
(1)生成.jsb3文件,我是通过URL的方式来生成的,由于系统访问要求登录(单点登录),
通过以下命令 :
sencha create jsb -a http://localhost/helloext/index.html -p app.jsb3
无法正确生成jsb文件(访问被单点登录拦截)
解决办法:
取消系统单点登录配置,自己创建一个过滤器,在过滤器中手动获取用户信息,将其设置的session中;或者修改需要在session中提取用户信息的代码,将用户信息直接写到代码中。
(2)成功访问系统后,还是无法正常生产jsb文件,原因是index.jsp中处在,<% %>代码块,去掉这些代码块。
(3)取消jsp中的代码块后,还是无法正常生成。原因:app.js中
//Ext.onReady(function(){ 不能把代码写在 Ext.onReady 函数中
Ext.application({
...
});
//});
(4)正常生成jsb文件后,通过以下命令:
sencha build -p app.jsb3 -d .
生成的app-all.js文件是没有经过压缩的,有3M多。
在网上有人说是js文件的编码问题,
修改D:\Program Files\SenchaSDKTools-1.2.3\jsbuilder\src\Project.js 165 行 在后面加上 --charset utf-8
但是试了很多次都没效果。找不到解决办法。
最后在网上自己下载了yui的 yuicompressor.jar 压缩工具进行代码压缩。
3、 Ext GRID 编辑控制
var editing = Ext.create('Ext.grid.plugin.CellEditing',{ clicksToEdit : 1, listeners : { beforeedit : function(e, eOpts) { var update = e.record; if (update) { var status = update.get('tdStatus'); if ('2' == status || '5' == status) { Ext.Msg.alert('操作失败', '任务正在评审中,无法编辑!'); return false; } } else { return false; } } } });