无法访问从 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);
};
我在 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>
我是 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);
};
我在 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>