无法访问从 ng-repeat 调用的函数中的用户输入

Unable to access user input in a function called from ng-repeat

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

我也尝试了这里其他一些人建议的 $parent 。这也没有帮助。

我在这里阅读了很多关于 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

我在 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>