最近因为需要这样一种业务,点击树的节点的checkbox后将触发一系列动作。但是这种触发需要权限控制,在只读情况下不能选择checkbox。查看api之后发现
disabled : Boolean
如果节点处于无效状态,此值为true。//api的叙述
所以想到使用disabled。但是使用了以后发现双击checkbox之后即使设置了disabled =true,checkbox仍然还是可以被选择。如是查看Ext.tree.TreeNodeUI的源码,发现
// private
onDblClick : function(e){
e.preventDefault();
if(this.disabled){//[b]请注意这里[/b]
return;
}
if(this.checkbox){
this.toggleCheck();
}
if(!this.animating && this.node.isExpandable()){
this.node.toggle();
}
this.fireEvent("dblclick", this.node, e);
}
断点进去查看之后,发现this.disabled始终为undefined,然后我将其修改成 this.node.disabled,功能得以实现。下面是我在程序中的处理方案:
Ext.override(Ext.tree.TreeNodeUI, {
onDblClick : function(e) {
e.preventDefault();
if (this.node.disabled) { return;
}
if (this.checkbox && !this.node.hasChildNodes()) {
this.toggleCheck();
}
if (!this.animating && this.node.hasChildNodes()) {
var isExpand = this.node.ownerTree.doubleClickExpand;
if (isExpand) {
}; this.node.toggle();
}
this.fireEvent("dblclick", this.node, e);
}
});
disabled : Boolean
如果节点处于无效状态,此值为true。//api的叙述
所以想到使用disabled。但是使用了以后发现双击checkbox之后即使设置了disabled =true,checkbox仍然还是可以被选择。如是查看Ext.tree.TreeNodeUI的源码,发现
// private
onDblClick : function(e){
e.preventDefault();
if(this.disabled){//[b]请注意这里[/b]
return;
}
if(this.checkbox){
this.toggleCheck();
}
if(!this.animating && this.node.isExpandable()){
this.node.toggle();
}
this.fireEvent("dblclick", this.node, e);
}
断点进去查看之后,发现this.disabled始终为undefined,然后我将其修改成 this.node.disabled,功能得以实现。下面是我在程序中的处理方案:
Ext.override(Ext.tree.TreeNodeUI, {
onDblClick : function(e) {
e.preventDefault();
if (this.node.disabled) { return;
}
if (this.checkbox && !this.node.hasChildNodes()) {
this.toggleCheck();
}
if (!this.animating && this.node.hasChildNodes()) {
var isExpand = this.node.ownerTree.doubleClickExpand;
if (isExpand) {
}; this.node.toggle();
}
this.fireEvent("dblclick", this.node, e);
}
});