angular.js:13236错误:[orderBy:notarray]预期的数组但收到了:

时间:2017-04-17 10:27:03

标签: angularjs

此HTML邀请按钮点击:

<p><button class="btn btn-info" ng-click="ResetEventStation()">
    Choose a different station</button></p>

调用此函数:

$scope.ResetEventStation = function() 
{
    localStorage.removeItem("stationId");
    localStorage.removeItem("stationName");
    localStorage.removeItem("isRegistrationStation");

    $scope.stationId = -1;
    $scope.stationName = '';
    $scope.isRegistrationStation = false;
}

我可以通过该功能断点和一步,但当我超越结束支撑时,我得到了

  

angular.js:13236错误:[orderBy:notarray]预期数组但收到:{“customer_id”:97,“event_id”:6,“station_id”:7,“station_name”:“St.Pancras”,“ customer_name“:”mawg“,”event_title“:”事件一“,”令牌“:”20000097-6ee02241-7231-4f8d-9956-5cf5022de147“}       http://errors.angularjs.org/1.5.0/orderBy/notarray?p0=%7B%22customer_id%22% ...%22%2C%22token%22%3A%2220000097-6ee02241-7231-4f8d-9956-5cf5022de147%22%7D           在angular.js:68           在angular.js:20410           at fn(eval at compile(angular.js:14086),:4:200)           在regularInterceptedExpression(angular.js:15213)           在Scope。$ digest(angular.js:16655)           在ChildScope。$ apply(angular.js:16928)           在HTMLButtonElement。 (angular.js:24551)           在HTMLButtonElement.dispatch(jquery-2.1.1.min.js:3)           在HTMLButtonElement.r.handle(jquery-2.1.1.min.js:3)

谷歌搜索显示它是一个过滤器错误,当然,浏览器控制台显示了这个功能,我认为Angular为我生成了这个功能:

(function($filter,ensureSafeMemberName,ensureSafeObject,ensureSafeFunction,getStringValue,ensureSafeAssignContext,ifDefined,plus,text
/*``*/) {
"use strict";
var fn=function(s,l,a,i){var v0,v1,v2,v3=l&&('ResetEventStation' in l);v2=v3?l:s;if(!(v3)){if(s){v1=s.ResetEventStation;}}else{v1=l.ResetEventStation;}ensureSafeObject(v1,text);if(v1!=null){ensureSafeFunction(v1,text);v0=ensureSafeObject(v2.ResetEventStation(),text);}else{v0=undefined;}return v0;};return fn;
})

我真的不明白发生了什么。有人能告诉我我做错了什么,以及如何解决错误?

我可以看到{"customer_id":97,"event_id":6,"station_id":7,"station_name":"St. Pancras","customer_name":"mawg","event_title":"Event one","token":"20000097-6ee02241-7231-4f8d-9956-5cf5022de147"}不是一个数组,但不确定它被引用的原因。

1 个答案:

答案 0 :(得分:2)

您应该在代码中查找orderBy过滤器并更改/删除它。因为,它正在尝试对数组进行排序,而不是数组,而是拥有该对象。

有两种方法可以使用此过滤器:

  • 首先,在HTML中,使用ng-repeat="something in someArray | orderBy: some"
  • 并且,在您的AngularJS代码中,使用$filter('orderBy')(...)

搜索这些并修改它们以改为使用数组(或删除过滤器)以消除此错误!