javascript - Angular $resource 中的自定义实例方法

标签 javascript angularjs

AngularJS 的所有操作 $resource添加为$customAction资源的方法,以便我可以将它们作为资源实例的方法调用,例如:

var User = $resource('/user/:userId', {userId:'@id'});
User.get({userId:123}, function(user) {
  user.abc = true;
  user.$save();
});

$savesave操作并可以在 user 上调用实例。

我现在定义了以下自定义操作,导致 $attributes user 的每个实例上的方法:

var User = $resource('/user/:userId', {userId:'@id'}, {
  attributes: { method: 'GET', url: '/user/:userId/attributes', isArray: true }
});

如果我现在尝试调用此方法,则会收到错误 Object #<Resource> has no method 'push' :

User.get({userId:123}, function(user) {
  var attrs = user.$attributes();    // error
  // ...
});

我对自定义操作的概念理解错误了吗?

最佳答案

看来你应该使用params而不是url

var User = $resource('/user/:userId/:customAction', {userId:'@id'}, {
  attributes: { method: 'GET', params: { userId:'@id', customAction: 'attributes'}, isArray: true }
});

关于javascript - Angular $resource 中的自定义实例方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21477529/

相关文章:

javascript - 显示从 s3 获取的图像

javascript - 向 Spring MVC Controller 发送多部分请求时出现 400 错误请求

javascript - AngularJs Jasmine 单元测试中的 $httpBackend

javascript - 如何使用 ng-repeat 显示 JSON 对象?

javascript - 在窗口调整大小时将具有百分比高度的背景图像转换为像素高度

javascript - 用自定义 javascript 全局命名空间替换窗口

javascript - 为什么在GoJS中diagram.model.nodeDataArray的长度与diagram.findNodesByExample({})的结果不同

javascript - 与子元素映射时如何检查元素是父元素的第一个子元素?

javascript - 在 AngularJS 中更改范围时如何重新应用指令

javascript - 当 mediaStreamTrack.enabled 被修改时,如何接收通知/事件?