总结过去与现在EXT TREE 的一些功能:
一些通用的控件属性,可以用Ext.override重写并放在公共文件中,这样所有引用此公共文件的页面的控件,将自动继承这些属性.
例如:需要让所有Grid的行号在翻页后连续递增并且其宽度自动设为30,则可在公共文件中将Ext.grid.RowNumberer重写如下:
Ext.override(Ext.grid.RowNumberer, {
width: 30,
renderer: function (value, cellmeta, record, rowIndex, columnIndex, store) {
return store.lastOptions.params.start + rowIndex + 1;
}
});
Ext.override(Ext.tree.TreeNode, {
deepExpand : function(anim, callback, scope){
// 先展开本节点
this.expand(false, anim, function(){
// 然后展开子节点
var cs = this.childNodes,
expanded = 0,
len = cs.length,
taskDone = function(){
// 每展开成功一个子节点,计数+1
expanded++;
// 如果所有子节点都展开,调用最终回调
if(expanded >= len){
this.runCallback(callback, scope || this, [this]);
}
};
if(len<=0){
taskDone.call(this);// <--- 这里? 应该修改为 taskDone.call(this);
return;
}
// 递归展开
for(var i = 0, len = cs.length; i < len; i++) {
cs[i].deepExpand(anim, taskDone, this);
}
}, this);
}
});