使用ng-include构建树时,我点击了'不管用

时间:2014-08-06 20:08:36

标签: javascript angularjs

我正在使用以下代码使用'ng-include'构建一个树,它看起来很好:

<script type="text/ng-template" id="tree_node.html">
    <a ng-click="select(this, data, $event)">{{data.name}}</a>
    <ul>
        <li ng-repeat="data in data.children track by $index" ng-include="'tree_node.html'"></li>
    </ul>
</script>
<div>
  <ul>
    <li ng-repeat="data in venueTree track by $index" ng-include="'tree_node.html'"></li>
  </ul>
</div>

问题是当点击{{data.name}}时,我的控制器中没有调用'select'功能。我没有javascript错误,没有任何反应。

2 个答案:

答案 0 :(得分:0)

reapter创建新范围可以使用$ parent或ng-init访问父范围,例如: 请看这里:http://jsbin.com/xowub/3/edit

HTML:

<li ng-repeat="data in venueTree track by $index" ng-include="'tree_node.html'" ng-init="parent=this"></li>

脚本:

<script type="text/ng-template" id="tree_node.html">
    <a ng-click="parent.select(this, data, $event)">{{data.name}}</a>
    <ul>
        <li ng-repeat="data in data.children track by $index" ng-include="'tree_node.html'"></li>
    </ul>
</script>

答案 1 :(得分:0)

我不确定我理解你的问题。在我制作的Plunk中,ng-click看起来效果很好。

app.controller('MainCtrl', function($scope) {
  $scope.name = 'World';
  $scope.venueTree = [{children:[{name:'one'},{name:'dos'}]},{children:[{name:'drei'},{name:'fyra'}]}];
  $scope.select = function(a,b,c){alert(b.name); console.log({a:a, b:b, c:c})};
});