2016-10-13 3 views
0

В шаблоне AngularJS я могу рода элементов в select списка, используя фильтр | обозначения:Используйте фильтр для удаления элементов списка в контроллере AngularJS

<select ng-model="myListModel" 
     ng-options="c.id as c.name for c in myList | orderBy:'name' }"> 

Эквивалентное это, кажется, я могу выполнить сортировку в контроллере используя $filter:

$scope.myList = $filter('orderBy')($scope.myList,'name'); 

Теперь я могу удалить элементы из списка в шаблоне с помощью:

<select ng-model="myListModel" 
     ng-options="c.id as c.name for c in myList | filter: { id : '!' + $scope.someId }"> 

Но как я могу (аналогично с сортировкой примера) выполняю то же удаление в контроллере с использованием $filter (что позволит избежать много кода JavaScript, чтобы выполнить удаление)?

+0

Что-то вроде '$ scope.filteredList = $ filter (" filter ") ($ scope.myList, {id:"! "+ $ Scope.someId});' – devqon

ответ

0

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

$scope.filteredListToUseInTemplate = 
    $filter("filter")($scope.myList, { id: "!" + $scope.someId }); 

Затем используйте filteredListToUseInTemplate в шаблоне вместо myList.

+0

Почему вы задаете вопрос и сразу отвечаете на него сам??? – devqon

+0

@devqon: Потому что это [явно поощряется] (http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/) от StackOverflow. Приятно делиться решением сложных проблем с другими, плюс это хороший способ «сохранить» решение для себя для последующего использования. – Gruber

+0

Почему вы создаете массив 'filterList'? Просто выполните '$ scope.filteredListToUseInTemplate = $ filter (" filter ") ($ scope.myList, {id:"! "+ $ Scope.someId});' – devqon