瀏覽代碼

fix tree bugs

Leopoldthecoder 9 年之前
父節點
當前提交
01138a5bf7
共有 2 個文件被更改,包括 12 次插入4 次删除
  1. 2 2
      packages/tree/src/model/node.js
  2. 10 2
      packages/tree/src/tree-node.vue

+ 2 - 2
packages/tree/src/model/node.js

@@ -9,10 +9,10 @@ const reInitChecked = function(node) {
 
   for (let i = 0, j = siblings.length; i < j; i++) {
     const sibling = siblings[i];
-    if (sibling.checked !== true) {
+    if (sibling.checked !== true || sibling.indeterminate) {
       all = false;
     }
-    if (sibling.checked !== false) {
+    if (sibling.checked !== false || sibling.indeterminate) {
       none = false;
     }
   }

+ 10 - 2
packages/tree/src/tree-node.vue

@@ -6,7 +6,7 @@
       <span class="el-tree-node__expand-icon"
         :class="{ 'is-leaf': node.isLeaf, expanded: !node.isLeaf && expanded }"
         ></span>
-      <el-checkbox v-if="showCheckbox" :indeterminate="node.indeterminate" v-model="node.checked" @change="handleCheckChange"></el-checkbox>
+      <el-checkbox v-if="showCheckbox" :indeterminate="node.indeterminate" v-model="node.checked" @change="handleCheckChange" @click.native="handleUserClick"></el-checkbox>
       <span
         v-if="node.loading"
         class="el-tree-node__icon el-icon-loading"
@@ -67,8 +67,16 @@
         }
       },
 
+      handleUserClick() {
+        if (this.node.indeterminate) {
+          this.node.setChecked(this.node.checked, true);
+        }
+      },
+
       handleCheckChange(checked) {
-        this.node.setChecked(checked, true);
+        if (!this.node.indeterminate) {
+          this.node.setChecked(checked, true);
+        }
       }
     },