2014-08-08 6 views
-4

У меня есть контроллерAngularJS: Пользовательская функция фильтра не вызывает

app.controller('cartCtrl', function($scope) { 

    $scope.$on('updateCart', function(event, cart) { 
     $scope.cart = cart; 
    }); 

    $scope.myFilter = function(item) { 
     console.log(item); 
    }; 
}); 

мнение, который загружается маршрутами:

<div class="shopping-row" data-ng-repeat="item in cart.items | filter:myFilter"> 
<div> 

Теперь проблема заключается в том, что MyFilter не triggred. Если я вызываю filter:myFilter(), он запускается, но значение не передается.

Я не понимаю, почему это не работает. Любая помощь оценивается.

ответ

0

Эта проблема cart.items имеет быть массив для функции фильтра будет называться, если это объект он просто игнорирует его. ng-repeat все равно отобразит объект.

0

Что делать, если вы используете

фильтр: MyFilter (пункт)

+0

Я не получаю предмет предмета. – Samosa

+0

Это потому, что вы не определили фильтр, а функцию, называемую фильтром. Пожалуйста, ознакомьтесь с официальной документацией по написанию фильтров: https://docs.angularjs.org/api/ng/filter/filter – Romain

0

Ошибка находится там, потому что вы пытаетесь создать пользовательский фильтр, но вы делаете это неправильно.

Вот как вы его создаете.

angular.module('phonecatFilters', []).filter('checkmark', function() { 
    return function(input) { 
    return input ? '\u2713' : '\u2718'; 
    }; 
}); 

Это как вы его используете.

<dd>{{phone.connectivity.infrared | checkmark}}</dd> 

Ссылки: https://docs.angularjs.org/tutorial/step_09

+1

Вам не нужно «ВСЕГДА» создавать отдельный фильтр. – Samosa

+0

См. Ответ http://stackoverflow.com/questions/16563018/custom-filters-and-ng-repeat-in-angularjs – Samosa

+1

Я бы не рекомендовал этот подход и никому не нужно. Я бы сказал, чтобы ваша функциональность была раздельной и многоразовой. – AngularHarsh

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