Ext 的树总是会自动加载,这就给加载时附带参数到后台带来了困难。
有几种解决方案:
1、在构建treestore时,在URL中传入参数,这中方式需要每次都重新构建store(也就是需要将原来的视图删除,再通过Ext.create创建树视图)
2、添加beforeload事件
var store = Ext.create('Ext.data.TreeStore', {
model : 'Tms.model.TreeInfo',
clearOnLoad : true,
proxy : {
type : 'ajax',
url : 'sys.sp?method=getJurisdictionScope'
},
listeners : {
exception : function(proxy, response, operation) {
Ext.MessageBox.show({
title : '服务器错误',
msg : operation.getError(),
icon : Ext.MessageBox.ERROR,
buttons : Ext.Msg.OK
});
},
beforeload : function(store, operation) {
if(!me.getQtId()){// 前端传递过来的参数,如果为空不加载
return false;
}
var new_params = {//参数
qtId : me.getQtId()
};
Ext.apply(store.proxy.extraParams, new_params);// 通过extraParams传递
}
}
});
设置参数,并调用tree的load方法重新加载树
loadJurScope : function(selModel, selected){ if(selected && selected[0]){ var record = selected[0]; var jsManage = this.getJsManage(); jsManage.setQtId(record.get('qtId')); var deptTree = jsManage.down('#deptTree'); deptTree.getStore().load(); } }