У меня есть список элементов, отображаемых на странице с помощью ng-repeat. Ниже приведен html.ng-repeat not render array изменения в контроллере
<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 вне метода, увидеть, если он изменяет то? – rrd
, что дает мне несколько вещей, о которых стоит подумать. Я получаю пустой массив вне метода – pparas
Можете ли вы регистрировать результаты $ scope.items в этом контроллере? Имеет ли он содержимое? – rrd