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

Мак*_*идь 8 javascript angularjs angularjs-orderby

我在项目中更新了Angular,从1.4.9更新到1.5.3.在其中一个页面上我收到此错误消息:

'Error: orderBy:notarray Value is not array-like', 'Expected array but received: 0'
Run Code Online (Sandbox Code Playgroud)

这是模板:

<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>
Run Code Online (Sandbox Code Playgroud)

vm.TargetingsAudience - 是一个对象数组:

[{Name: "???", TargetingCategory: "Audience", TypeId:"Location", Values: [0: "??????", 1: "??????", 2: "?????????? ???????"]}]
Run Code Online (Sandbox Code Playgroud)

jow*_*wey 11

这可能与角度1.5的突变有关

过滤器(orderBy)

由于2a85a634,通过orderBy过滤器传递非类数的值(undefined或null除外)将引发错误.以前,输入未更改,这可能导致难以发现的错误,并且与其他过滤器(例如过滤器)不一致.被认为是类似数组的对象包括:数组,数组子类,字符串,NodeLists,jqLit​​e/jQuery集合

尝试使用AngularJS toArray Filter

编辑:

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

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

<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>
Run Code Online (Sandbox Code Playgroud)


Ale*_*gan 1

改成orderBy:orderByNameorderBy:'Name'