【发布时间】:2017-01-31 06:02:22
【问题描述】:
我有一个使用 ng-repeat 显示在页面上的项目列表。下面是html。
<div class="container-fluid">
<div class="container" >
<div class="page-header">
<h3>Found {{searchResults.length}} results that match your search <br /><small>Click on any result to view details</small></h3>
</div>
----
<div class="list-group" ng-repeat="item in searchResults track by $index">
<a ng-href="#" class="list-group-item">
<h4 class="list-group-item-heading">{{item.test_name}}</h4>
<p class="list-group-item-text" ng-bind-html="item.synonyms"></p>
</a>
</div>
</div>
这个数组是在应用程序加载时创建的。下面是控制器中修改数组的函数。
当用户在搜索框中键入内容并点击搜索时,我希望位置发生变化,如代码所示,并使用 ngrepeat 指令显示结果列表。
$scope.onClickSearch = function () {
console.log("Search Click in Controller - " + $scope.searchString);
$scope.searchResults = new Array();
/*
remove special characters and html tags from the synonyms and check if the name
or synonym contains the search string.
*/
for (i = 0; i < $scope.items.length; i++) {
var synonyms = $scope.items[i].synonyms
var testName = $scope.items[i].test_name.toLowerCase();
if ((testName.indexOf($scope.searchString) > -1) || (synonyms.indexOf($scope.searchString) > -1)) {
var searchItem = $scope.items[i];
$scope.searchResults.push(searchItem);
}
};
$location.url("/search");
});
console.log($scope.searchResults); //Array is shown to be updated here.
函数更新数组时,页面显示的html并没有改变。 控制台中的日志显示正确。我试过$scope.$digest() 和$scope.$apply() 结果没有变化。
这是一个plunker 与重新创建的问题。这应该对问题进行更详细的描述。当我输入要搜索的内容并点击搜索按钮时,视图不显示搜索结果。
我有第二个问题与这个问题类似,但没有得到解答。这是我的第二次尝试,解释略有不同。
【问题讨论】:
-
你有没有试过在方法之外声明$scope.searchResults,看看它会不会改变?
-
这让我想到了一些事情。我在方法之外得到一个空数组
-
你能在那个控制器中记录 $scope.items 的结果吗?有内容吗?
-
是的,它确实有内容。请随时编辑 plunk
-
稍微改了一下,还是可以的,plnkr.co/edit/kWqje5Xn17259ixaqbf5我用工厂存储搜索结果然后恢复,然后重新加载。
标签: javascript angularjs arrays angularjs-directive angularjs-ng-repeat