select angular-ivh-treeview 中的节点时检查所有父节点

check all parent when select a node in angular-ivh-treeview

我想用angular-ivh-treeview如何。这个 sample 我想用。 但是这个示例对我来说有一个问题,当我 select 一个节点没有 select 所有父节点时。怎么修?

你至少有几个选择。您可以创建一个自定义模板并监听复选框点击,然后:获取被点击节点的父节点并更新它们的选定状态,或者发出一个事件告诉父节点更改它们的选定状态。

这是前一种解决方案的示例:http://jsbin.com/cegipa/6/edit?html,js,output

请注意,单击子节点时,其父节点会更新以匹配其新状态。这是通过使用以下模板完成的:

<span ivh-treeview-twistie></span>
</span>
<input type="checkbox" select-parents ng-model="node.selected">
<span class="ivh-treeview-node-label" ivh-treeview-toggle>
  {{trvw.label(node)}}
</span>
<div ivh-treeview-children></div>

将此指令附加到复选框:

app.directive('selectParents', function(ivhTreeviewBfs) {
  return {
    link: function(scope, element, attrs) {
      element.on('click', function() {
        var n = scope.node;
        ivhTreeviewBfs(stuff, function(node, parents) {
          if(n === node) {
            angular.forEach(parents, function(p) {
              p.selected = n.selected;
            });
            return false;
          }
        });
        scope.$apply();
      });
    }
  };
});

并且您可以通过传递事件来做类似的事情(并且可能更有效)。