ivh-TreeView AngularJs获取节点ID在标签上单击

时间:2016-10-27 04:09:46

标签: javascript angularjs treeview

我是AngularJs的新手,我使用Angular Ivh_treeview组件来显示JSON数据的嵌套树。树正确加载。现在我想

获取标签上的节点ID单击。因此,对于试验,我试图制作一个警报框,以便我可以检查函数调用是否有效。 Ivh-Treeviewe只有复选框功能。因此尝试添加自定义模板

nodeTpl: [
            '<div>',
            '<span ivh-treeview-toggle>',
            '<span ivh-treeview-twistie></span>',
            '</span>',
            '<span href="#here" class="ivh-treeview-node-label" ng-click="test()">',
            '{{trvw.label(node)}}',
            '</span>',
            '<div ivh-treeview-children></div>',
            '</div>'
        ].join('\n')

并在控制器上

this.test = function() {
alert("hello");

}

现在不会调用click事件。有人可以解决这个问题。还尝试用$ scope.test定义来做它没有用。

1 个答案:

答案 0 :(得分:0)

您的问题在于ivh-treeview(v1)不会使您的转置范围对您的节点模板可用。从本质上讲,这意味着模板无法访问树外范围内定义的内容。一切都不会丢失!你有几个选择:

  1. 在一个整洁的指令中点击点击逻辑。例如:

    ...
    '<span href="#here" class="ivh-treeview-node-label" do-fancy-things-on-click>',
    ...
    
  2. 此处,do-fancy-things-on-click是您已定义的指令,用于侦听点击事件,然后检查node上的$scope并执行某些操作。您可以更新附加元素的显示,广播事件,与服务交互等等。

    1. 使用ivh-treeview的v2分支。这尚未完全发布,但为您的模板提供了转换范围是我们打算继续支持前进的功能。我建议使用transcluded inline template
    2. 请注意,v2还没有完全掉线的原因是因为我们没有完成重大改变:)。我不会期待任何过于疯狂的事情,但如果第一个选项适合你,它肯定会继续发挥作用。