无法访问从ng-repeat

时间:2015-12-16 21:09:04

标签: javascript angularjs treeview angularjs-ng-repeat angular-ngmodel

我是Angular的新手,可能会遗漏一些明显的东西。我确实阅读了ng-model范围文档。并遵循建议使用对象而不是基元。

我也试过了其他几个人建议的$ parent。这也没有帮助。

我读了很多Q&在这里涉及ng-repeat。但他们正在讨论ng-repeat中的输入。在我的情况下,只有一个文本框。我正在尝试使用ng-repeat在树内搜索。

<script type="text/ng-template" id="tree_item_renderer.html">
  {{data.name}}
  <ul>
    <li ng-repeat="data in data.nodes" ng-include="'tree_item_renderer.html'"  ng-show="visible(data)"></li>
  </ul>
</script>

这是被调用的函数:

 $scope.visible = function(item) {
  console.log("SearchText inside visible: " + $scope.input.searchText);
  return !($scope.input.searchText && $scope.input.searchText.length > 0
              && item.title.indexOf($scope.input.searchText) == -1);
    };

看看at my jsFiddle

1 个答案:

答案 0 :(得分:4)

我在jsFiddle上看到了你的代码。您有两次调用ng-controller="TreeController"并初始化ng-app = Application的问题。我已经注释掉了这两行代码,您可以在控制台上看到更改。

您遇到此问题的原因是您让Angular重新初始化TreeController,它会清除input.searchText的值。

查看工作jsFiddle

<div ng-app="myApp">
  <div ng-controller="TreeController">
    Search UIC:
    <input type="text" ng-change="search()" ng-model="input.searchText" 
            placeholder="Enter your search terms" />
    <!-- <ul ng-app="Application" ng-controller="TreeController"> -->
    <ul>
      <li ng-repeat="data in tree" ng-include="'tree_item_renderer.html'"  ng-show="visible(data)">
      </li>
    </ul>
  </div>
</div>