这是我的资源:
var app, deps;
deps = ['ngGrid', 'getUsers'];
angular.module('getUsers', ['ngResource'])
.factory('users', function ($resource)
{
return $resource('/Admin/GetUsers', {}, {
query: { method: 'GET', IsArray: true }
});
});
然后我添加了代码以尝试添加强制解析的步骤:
$scope.myData = users.query(function(response)
{
if (typeof (response) == string)
{
response = JSON.parse(response);
}
});
但它永远不会走得这么远,这就是Chrome中的错误:
Error: [$resource:badcfg] object
http://errors.angularjs.org/1.2.14/$resource/badcfg?p0=array
at http://localhost:23002/Scripts/angular.js:78:12
at a.module.factory.f.(anonymous function).p.then.m.$resolved (http://localhost:23002/Scripts/angular-resource.min.js:8:517)
at deferred.promise.then.wrappedCallback (http://localhost:23002/Scripts/angular.js:11046:81)
at deferred.promise.then.wrappedCallback (http://localhost:23002/Scripts/angular.js:11046:81)
at http://localhost:23002/Scripts/angular.js:11132:26
at Scope.$get.Scope.$eval (http://localhost:23002/Scripts/angular.js:12075:28)
at Scope.$get.Scope.$digest (http://localhost:23002/Scripts/angular.js:11903:31)
at Scope.$get.Scope.$apply (http://localhost:23002/Scripts/angular.js:12179:24)
at done (http://localhost:23002/Scripts/angular.js:7939:45)
at completeRequest (http://localhost:23002/Scripts/angular.js:8142:7)
当然我搜索了那个错误,但是我找到了将IsArray设置为true或false的建议,这没什么区别。如果我设置一个断点并在响应字符串上调用JSON.parse,它会变成一个对象数组,就像我想要的那样。所以字符串是完全有效的JSON,但是angular似乎不愿意解析它,它接受它作为字符串然后死掉。
我的控制器很简单:
public List<ApplicationUser> GetUsers()
{
return AdminUsersViewModel.AllUsers;
}
然后,该方法使用LINQ查询从数据库中获取用户,然后遍历该集合以创建新的集合,因为在我这样做之前,它只是爆炸了。我在浏览器中进行了调用,并看到角度代码中出现的相同字符串。
我需要知道的是,为什么没有角度发现这是一个对象的集合,我怎么能强制它解析字符串,或者改变格式以便角度可以告诉它是什么?
感谢您的光临。
答案 0 :(得分:0)
好的,我明白了。我认为我读过的帮助说使用IsArray(事后看来,我认为它说不要使用IsArray)。我知道那是非标准的,但这就是我所做的。我运行了非缩小版本,发现了我的错误。更改为isArray,它可以工作。
感谢您寻找: - )