更新到Angular 1.5.3时出现错误'orderBy'

时间:2016-04-06 10:47:43

标签: javascript angularjs angularjs-orderby

我在项目中更新了Angular,从1.4.9更新到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: "Московская область"]}]

2 个答案:

答案 0 :(得分:10)

这可能与角度1.5

的突变有关
  

过滤器(orderBy)

     

由于2a85a634,传递非类数组的值(未定义除外)   或null)通过orderBy过滤器将抛出一个错误。先前,   输入没有变化,这可能导致难以定位   错误并与其他过滤器(例如过滤器)不一致。对象   被认为是类似数组的包括:数组,数组子类,字符串,   NodeLists,jqLit​​e / jQuery集合

尝试使用AngularJS toArray Filter

编辑:

因为你很难过你升级了应用程序,我认为它之前正在运行。但为了使它工作,我认为你必须切换跟踪和按语句排序

  

注意:track by必须始终是最后一个表达式:

professional

答案 1 :(得分:1)

orderBy:orderByName更改为orderBy:'Name'