在上一章的基础上添加,上节末尾有源代码地址
Ext.define("Demo.controller.tree.Tree", {
extend: "Ext.app.ViewController",
alias: "controller.demo_controller_tree",
init: function () {
this.control({
"demo_view_tree": {
checkchange: this.onCheckChange
}
});
},
onCheckChange: function (node, ischecked) {
if (node.get("cls") != "") {
ischecked = true;
}
var me = this;
me.checkedChildNode(node, ischecked, me);
me.checkedParentNode(node, ischecked, me);
},
checkedChildNode: function (node, ischecked, me) {
node.set("checked", ischecked);
node.set("cls", "");
if (node.hasChildNodes()) {
node.eachChild(function (nodeChild) {
me.checkedChildNode(nodeChild, ischecked, me)
});
}
},
checkedParentNode: function (node, ischecked, me) {
var parent = node.parentNode;
var partial = true;
if (parent != null) {
parent.eachChild(function (parentChild) {
if (parentChild.get("checked") != ischecked || parentChild.get("cls") != "") {
parent.set("cls", "partial_select");
parent.set("checked", true);
partial = false;
return false;
}
});
if (partial) {
parent.set("checked", ischecked);
parent.set("cls", "");
}
me.checkedParentNode(parent, ischecked, me);
}
}
});
.partial_select
{
filter: alpha(opacity=50);
-moz-opacity: 0.5;
opacity: 0.5;
}
![这里写图片描述](https://img-blog.csdn.net/20170124101654286?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMjAyODIyNjM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)