我是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);
};
答案 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>