|
issus
1. 调用 grid.selModel.selectFirstRow时机 grid.redner/ store.load 后,但js的异步特性 ,需要你如下处理 以货币窗口为例子 ui描述中为store增加 "listeners":{"load":"currencyLoad"},为grid增加 "listeners":{"render":"gridRender"} 在js中增加 如下代码 (c3 默认导入eventproxy.js)
var selectFirstRow=function(store,grid){
Ext.getCmp('grid').selModel.selectFirstRow();
}
var proxy=new EventProxy();
proxy.assign("store","grid",selectFirstRow);
function currencyLoad(){
proxy.trigger('store',true);
}
function gridRender(){
proxy.trigger('grid',true);
}
2. grid password 列 ColumnModel 定义 renderer : function(value, p, r) {return ''} c3 ui解决方法 {"header":"口令","dataIndex":"password","renderer":"renderPassword"} 只要在该ui关联 js中定义 function renderPassword(value){ return "";} 即可,ui处理模块自动处理这个转换 3. tree问题 root类型 ,如果在json中声明root,则默认为Ext.tree.AsyncTreeNode,nodeType为async ,如果需要Ext.tree.TreeNode,则nodeType必需为node 当调用 node.expand时,当tree是不可见时(比方说在另一个tab中),节点不会展开,而且也无再手动展开 另外一个bug是,当调用 node.ui.isChecked/node.ui.toggleCheck,如果该node没有被展开过,则调用不生效 4. store.load 变POST 通过 显式说明 proxy,指定method:'GET'生效 {proxy:{url:'/employees',method:'GET'}}
很奇怪,同文档描述 不一样,也无法 传递 method:"GET" 不过get可以通过 store.proxy.conn.method="get"; 设置,但 store.load({params:{department_id:node.id}}); 无效 问题排查 1. 直接设置Ext.data.Connection.extraParams无效 2. 在url中传递参数有效,直接调用 Ext.Ajax.Request 传递 params有效 临时解决方法
Ext.getCmp('tree').on('click',function(node){
if(node!=this.root && node.id){
var url=Ext.urlAppend(employees.url,Ext.urlEncode({department_id:node.id}));
employees.proxy=new Ext.data.HttpProxy({url:url});
employees.load();
}
});
|