2015-02-27 2 views
0

Я хотел бы инициализировать отфильтрованный список с angularjs, я не знаю, как получить доступ к нг-инициализации переменных ...Доступ к нг-инициализации переменной с фильтром

Edit # 1:

app.controller("AgreementsController", function($scope, $http, $filter) { 
 
    $scope.agreements = [];  
 
    $http.get('/api/agreement').success(function(data, status, headers, config) { 
 
    $scope.agreements = data.agreements; 
 
    $scope.filteredAgreements = $filter('filter')($scope.agreements, 
 
              {number: $scope.search}); 
 
});
<tbody ng-init="filteredAgreements = (agreements | filter:{number:search})"> 
 
    <tr ng-repeat="agreement in agreements | filter:{number:search} | limitTo:5"> 
 
    <td>{{agreement.number}}</td> 
 
    </tr> 
 
</tbody> 
 
{{filteredAgreements.length}} <!-- 291 even if I put "65" into the search -->

+0

Что вы имеете в виду _ng-INIT variables_? И где находится 'AgreementsController', который находится в DOM по отношению к HTML, который вы опубликовали? – zeroflagL

+0

Переменные в 'ng-init' ... Мой контроллер хорошо в dom, но не в сообщении;) – tonymx227

+0

Это тавтология. В 'ngInit' нет переменных. 'ngInit' оценивает выражение в текущей области. Если это та же область действия контроллера, то контроллер может получить к нему доступ через область действия. – zeroflagL

ответ

1

Вы agreements через AJAX, это означает, что в то время ngInit директива работает они пусты, и поэтому filteredAgreements будет покупать право y, тоже. Вам нужно подождать, пока не вернется вызов AJAX.

Чтобы использовать угловой фильтр в JavaScript, вам понадобится услуга $filter. Вы вызываете его с именем фильтра, чтобы получить фильтр, а затем вызывайте эту функцию с данными, которые нужно отфильтровать (в вашем случае agreements) и нужными аргументами.

app.controller("AgreementsController", function($scope, $http, $filter) { 
    $scope.agreements = [];  
    $http.get('/api/agreement').success(function(data, status, headers, config) { 
    $scope.agreements = data.agreements; 
    $scope.filteredAgreements = $filter('filter')($scope.agreements, 
               {number: $scope.search}); 
}); 

Ссылки:

+0

Не работает, '$ scope.search' undefined ... – tonymx227

+0

@ tonymx227 И почему это' undefined'? У меня есть только информация, которую вы нам даете. – zeroflagL

+0

См. Edit;) Длина 'filterAgreements' равна 291, даже если я помещаю что-то в форму ввода ... – tonymx227

Смежные вопросы