Подтвердить что ты не робот

Ng-repeat с отслеживанием и фильтром и orderBy не работает

У меня есть этот код.

http://jsfiddle.net/0tgL7u6e/

JavaScript

var myApp = angular.module('myApp',[]);

function MyCtrl($scope) {
    $scope.nameFilter = '';
    $scope.contacts = [
        {name: 'GHI'},
        {name: 'DEF'},
        {name: 'ABC'},
        {name: 'JKL'}
    ];
}

Просмотр

<div ng-controller="MyCtrl">
    <div><input type="text" ng-model="nameFilter" placeholder="Search..." /></div>
    <p ng-repeat="contact in contacts track by $index | filter: nameFilter | orderBy: name">{{ contact.name }}</p>
</div>

Я не знаю, почему заказ не работает и почему фильтр не работает.

В другом вопросе я читал о том, что объекты не могут быть отфильтрованы или упорядочены. Но у меня есть массив объектов выше. Кроме того, он должен работать!?

В чем проблема?

4b9b3361

Ответ 1

Чтобы использовать отслеживание с фильтрами, трек по выражению должен быть добавлен после фильтра.

<p ng-repeat="contact in contacts | orderBy: 'name' | filter: nameFilter  track by $index">{{ contact.name }}</p>

Вот рабочий fiddle

Ответ 2

вам нужно изменить код на следующий

<div ng-controller="MyCtrl">
    <div><input type="text" ng-model="nameFilter" placeholder="Search..." /></div>
    <p ng-repeat="contact in contacts  | orderBy: name | filter: nameFilter track by $index ">{{ contact.name }}</p>
</div>