我在angularjs中遇到了一个奇怪的错误。我已经在angularjs中使用$ resource模块通过注册此服务来生成休息请求
$provide.service("CustomerService", ['$resource', function ($resource) {
return $resource('/com/caspco/customers/:url:id', {}, {
query: { method: 'GET', isArray: true, params: {id: '@id'}},
find: { method: 'POST', isArray: true ,params:{url:'search'}},
.......... other actions ..........
});
}]);
在其他服务器端我有一个搜索方法,上面的find
动作的url返回一个json数组。当我在控制器中通过这种方式调用find
动作时:
service.$find().$promise.$then(function (res) {
console.log("resource is" + res);
}, function (error) {
console.log("error");
});
提出
TypeError: (anonymous function) angular.js:2070
(anonymous function) angular.js:1516
k.$apply angular.js:2575
(anonymous function) angular.js:4323
o.event.dispatch jquery.js:3
r.handle
答案 0 :(得分:0)
服务上的方法不以'$'字符作为前缀。从服务返回的资源的方法以'$'为前缀。 $ promise属性的'then'方法也没有'$'作为前缀。
我认为如果你清理那种语法,你就会走上正轨。
答案 1 :(得分:0)
首先关闭您的代码来调用该服务应该是:
service.find().$promise.then(function (res) {
console.log("resource is" + res);
}, function (error) {
console.log("error");
});
接下来要检查的是,您的响应实际上是一个数组。我得到了大量的时间,我正在调用一个服务从后端获取一个对象列表,但在返回它们之前,后端将它们包装在一个Response对象中,所以接收到的角度不是一个数组,它是一个内部有数组的对象。