Я фильтрую массив (результатов) с запросом. Удалив фильтр, результаты точно отображает все элементы. Удалив http.get, который обновляет результаты и инициализирует результаты, чтобы содержать элементы, фильтр точно фильтрует.Угловой ng-повтор с фильтром, не обновляющимся с помощью http.get
С как фильтром и http.get обновлением результатов, сообщение для каких-либо результатов показывает, даже если результатов содержат данные. Я подтвердил, что результаты должным образом обновлены http.get (как показано {{results}}, показывая правильно ниже). Ниже какие {{}} Результаты отображает:
[
{
"name": "Company Number 1 ",
"description": "description of 1 "
},
{
"name": "Company Number 1 ",
"description": "description of 1 "
},
{
"name": "Company Number 2 ",
"description": "description of 2 "
}
]
index.html
<div class="form-group label-floating">
<label class="control-label" for="addon1">Filter</label>
<input id="addon1" class="form-control" type="text" data-ng-model="query">
</div>
{{results}} <!--This works properly-->
<table class="table table-striped" id="resultsTable">
<tbody>
<tr data-ng-show="resultsFilter.length === 0">
<td class="center" colspan="3">No results found.</td> <!--This message appears even when results should have elements-->
</tr>
<tr data-ng-repeat="result in resultsFilter = (results | filter:query | limitTo:displayNum) track by result.name">
<td>
<button class="btn btn-primary btn-block">
{{result.name}}
</button>
</td>
</tr>
</tbody>
</table>
angular.js
$scope.query = "";
$scope.displayNum = 20;
$scope.results = [];
...
$scope.updateResults = function() {
$http({
method: "GET",
url: requestUrl,
params: {id: $scope.identifierInHierarchy.companyId}
})
.then(function successCallback(response) {
$scope.query = "";
$scope.results = [];
response.data.forEach(function (entry) {
$scope.results.push({
name: "Company Number " + entry.CompanyNumber,
description: "description of " + entry.CompanyNumber
});
});
},
function errorCallback(response) {
});
}
Update: Нет, изменение resultsFilter к результатам не решает проблему. Я также считаю, что это неверно, так как сохранение результатовFilter и инициализация результатов статически будут правильно фильтроваться (как было сказано ранее).
Где вы заявляете результаты? –
Это не объявлено (или как-то объявлено одновременно с его назначением, я не уверен). Тем не менее, фильтрация работает, когда результаты не обновляются с помощью GET. Чтобы быть тщательным, я добавил объявление $ scope.resultsFilter = [] после объявления результатов, но это фактически привело к сообщению «без результатов», показывающему одновременно с результатами (когда результаты не обновляются с помощью GET). С GET изменений не было, и только результаты не показывались. –
Я нашел ресурс (и рассуждения), который я использовал для создания результатов. Фильтр: http://angular-tips.com/blog/2014/08/tip-accessing-filtered-array-outside-ng-repeat/ –