我在项目中更新了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: "Московская область"]}]
答案 0 :(得分:10)
这可能与角度1.5
的突变有关过滤器(orderBy)
由于2a85a634,传递非类数组的值(未定义除外) 或null)通过orderBy过滤器将抛出一个错误。先前, 输入没有变化,这可能导致难以定位 错误并与其他过滤器(例如过滤器)不一致。对象 被认为是类似数组的包括:数组,数组子类,字符串, NodeLists,jqLite / jQuery集合
编辑:
因为你很难过你升级了应用程序,我认为它之前正在运行。但为了使它工作,我认为你必须切换跟踪和按语句排序
注意:track by必须始终是最后一个表达式:
professional
答案 1 :(得分:1)
将orderBy:orderByName
更改为orderBy:'Name'