带有复选框问题的ExtJS 4树面板

带有复选框问题的ExtJS 4树面板,extjs,extjs4,extjs-mvc,Extjs,Extjs4,Extjs Mvc,我们在应用程序中使用带复选框的treepanel。它看起来像: var treepanel={ id:'树', xtype:“树面板”, 商店:layerStore, rootVisible:false, 听众:{ checkchange:函数(节点,check){ 如果(node.get('id')='teacher'){ 警报(“您已选择教师节点”); }else if(node.get('id')=='student'){alert('you have selected student n

我们在应用程序中使用带复选框的treepanel。它看起来像:

var treepanel={
id:'树',
xtype:“树面板”,
商店:layerStore,
rootVisible:false,
听众:{
checkchange:函数(节点,check){
如果(node.get('id')='teacher'){
警报(“您已选择教师节点”);
}else if(node.get('id')=='student'){alert('you have selected student node');}
}
}
};

图层存储代码:

var layerStore = Ext.create('Ext.data.TreeStore',{
root : {
children : [
{
text : 'teacher layer',
id : 'teacher',
checked : false
},{
text : 'Student layer',
id : 'student',
checked : false
}]
}
}))


现在,当我们选中特定复选框时,我收到了警报消息。我的问题是,如果我们取消选中复选框,它将显示警报,就像您未选中特定层一样。请帮助我。

我请求您将“checkchange”处理程序更改为:

checkchange : function(node,check){
  var s = (!check && 'un' || '' ) + 'selected';

  if(node.get('id') == 'teacher'){
    alert('you have '+s+' teacher node');
  }else if(node.get('id') == 'student'){ alert('you have '+s+' student node'); }
}

非常感谢您的回复。这对我帮助很大。嗨,分子,我还有一个疑问,如果我们选择父节点,它必须选择特定父节点下的cild节点。例如:如果我们选择教师节点,则必须选择教师节点下的子节点。是否有任何可能性?如果请帮助我。嗨@Kiran。这是可能的。您可以使用node.cascadeBy。例如node.cascadeBy(函数(childNode){childNode.set('checked',check);tree.firevent('checkchange',childNode,check);}。尽管嵌套节点可能有问题。此代码可能不会影响未渲染的节点。在这种情况下,我建议使用node.expandChildren(true,函数(){node.cascadeBy(函数(childNode){childNode.set('checked',check);tree.firevent('checkchange',childNode,check);}});如果在取消选择父节点时显示取消选择,我会很高兴的。我刚刚尝试使用node.cascadeBy(函数(childNode){childNode.set('unchecked',check)};但没有改进。如果您有任何想法,请与我们分享。