2016-04-06 8 views
3

Я обновил Angular на моем проекте, с 1.4.9 до 1.5.3. И на одной из страниц я получаю сообщение об ошибке:Ошибка 'orderBy' при обновлении до Angular 1.5.3

'Error: orderBy:notarray Value is not array-like', 'Expected array but received: 0' 

Вот шаблон:

<tr ng-repeat="targeting in vm.TargetingsAudience track by $index | orderBy:orderByName"> 
        <td> 
         {{targeting.Name}} 
        </td> 
        <td class="au_content_descr"> 
         <p ng-repeat="val in targeting.Values track by $index | orderBy:orderByName" class="targeting-value">{{val}}</p> 
        </td> 
        <td class="au_ico_2"> 
         <a class="au_del au_fast_ico" ng-click="vm.removeTargeting(targeting)"><i class="glyphicon glyphicon-remove"></i></a> 
         <a class="au_edit au_fast_ico" ng-click="vm.editTargeting(targeting)"><i class="glyphicon glyphicon-pencil"></i></a> 
        </td> 
       </tr> 

vm.TargetingsAudience - это массив объектов:

[{Name: "Гео", TargetingCategory: "Audience", TypeId:"Location", Values: [0: "Россия", 1: "Москва", 2: "Московская область"]}] 

ответ

1

Изменить orderBy:orderByNameorderBy:'Name'

6

Это может быть связано с разрывным изменением угловых 1,5

Фильтры (OrderBy)

В связи с 2a85a634, передавая не-массив, как значение (кроме неопределенного или нуль) через orderBy фильтр выдаст ошибку. Ранее вход был возвращен без изменений, что может привести к ошибкам с ошибками и не соответствует другим фильтрам (например, фильтру). Объекты считается массив типа включают в себя: массивы, подклассы массива, строки, нодлистов, коллекции jqLite/JQuery

Попробуйте использовать AngularJS toArray Filter

EDIT:

Потому что вам грустно вы обновили приложение , Я предположил, что он работал раньше. Но чтобы сделать это работает, я думаю, вы должны переключить трек на заказ и по высказываниям

Примечание: дорожки, всегда должно быть последним выражением:

<tr ng-repeat="targeting in vm.TargetingsAudience | orderBy:orderByName track by $index "> 

<p ng-repeat="val in targeting.Values | orderBy:orderByName track by $index " class="targeting-value">{{val}}</p> 
+0

Я побежал в ту же ошибку. Проблема в том, что 'track by' находится перед' | orderBy'. Перемещение «track by» до конца исправляет его. – Zach

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