Javascript Angular$resource中的自定义实例方法
AngularJSJavascript Angular$resource中的自定义实例方法,javascript,angularjs,Javascript,Angularjs,AngularJS$resource的所有操作都作为$customAction方法添加到资源中,以便我可以将它们作为资源实例上的方法调用,例如: var User = $resource('/user/:userId', {userId:'@id'}); User.get({userId:123}, function(user) { user.abc = true; user.$save(); }); $save是保存操作,可以在用户实例上调用 现在,我定义了以下自定义操作,在用户的每
$resource
的所有操作都作为$customAction
方法添加到资源中,以便我可以将它们作为资源实例上的方法调用,例如:
var User = $resource('/user/:userId', {userId:'@id'});
User.get({userId:123}, function(user) {
user.abc = true;
user.$save();
});
$save
是保存
操作,可以在用户
实例上调用
现在,我定义了以下自定义操作,在用户
的每个实例上产生了一个$attributes
方法:
var User = $resource('/user/:userId', {userId:'@id'}, {
attributes: { method: 'GET', url: '/user/:userId/attributes', isArray: true }
});
如果现在尝试调用此方法,则会出现错误对象#没有方法“push”
:
User.get({userId:123}, function(user) {
var attrs = user.$attributes(); // error
// ...
});
我对自定义操作的概念理解错误了吗?似乎应该使用参数而不是url
var User = $resource('/user/:userId/:customAction', {userId:'@id'}, {
attributes: { method: 'GET', params: { userId:'@id', customAction: 'attributes'}, isArray: true }
});
对我来说,最终的解决办法是改用。它支持使用链接语法的嵌套资源,以便我可以访问以下内容:
Restangular.one(“用户”,123).all(“属性”).get()