假设我有
angular.module('clientApp').factory('CreditCardResource', function($resource) {
return $resource('/user/:userId/card/:cardId',
{cardId:'@id'}, {
charge: {method:'POST', params:{charge:true}}
});
});
Run Code Online (Sandbox Code Playgroud)
我希望能够将CreditCardResource与某个userId联系起来,这样每次我调用CreditCardResource.query()时都会获得与该用户相关的卡片.我不想每次都调用CreditCardResource.query({userId:123}).我希望资源保留为服务.
我想做一些像:CreditCardResource.defaultParams.userId = '123'在我的控制器中.
解决这个问题的最佳方法是什么?
从版本1.1.2开始,支持动态默认参数
https://github.com/angular/angular.js/commit/cc42c99bec6a03d6c41b8e1d29ba2b1f5c16b87d
基本上,而不是:
params: {
apiKey: user.getApiKey()
}
Run Code Online (Sandbox Code Playgroud)
你用:
params: {
apiKey: function() {
return user.getApiKey();
}
}
Run Code Online (Sandbox Code Playgroud)
Angular Resource Resource.bind()为这种确切的环境提供了一种方法(我在v1.0.3上).
在您的情况下,您的代码应该是:
var BoundCreditCard = CreditCard.bind({userId: '123'});
// Performs a GET on /user/123/card/456
var card = BoundCreditCard.get({cardId: "456"});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7905 次 |
| 最近记录: |