我正在使用angular-rails-resource进行Angular的ajax调用
我想在我的资源中创建应该表现的自定义方法
与.query()
方法相同。以下是资源的代码:
angular.module('mymodule').factory('Posts', ['railsResourceFactory',
function(railsResourceFactory) {
var resource = railsResourceFactory({
url: 'api/v1/users/{{userId}}/posts',
name: 'post'
});
resource.feed = function(userId, timestamp, page) {
return resource.$get('api/v1/users/' + userId + '/posts/feed', {timestamp: timestamp, page: page});
};
return resource;
}
]);
此代码存在两个问题:
.query()
方法
userId直接作为参数,而不是作为对象。如何将此代码改进为已定义的更多.query()
方法
角轨道资源?
我想以下列方式调用此方法.feed()
:
Posts.feed({userId: $scope.userId}, {timestamp: new Date(), page: 1}).then(function success(posts){ /*...*/ }, function error() { /*...*/ });
答案 0 :(得分:1)
在名为.resourceUrl()
的角度轨道资源中有一种方便的方法,它接受url参数对象并使用它构建URL。您只需将.feed()
更改为如下所示:
resource.feed = function(context, params) {
return resource.$get(resource.resourceUrl(context) + '/feed', params);
};
因此,完整的服务将具有以下形式:
angular.module('mymodule').factory('Posts', ['railsResourceFactory',
function (railsResourceFactory) {
var resource = railsResourceFactory({
url: 'api/v1/users/{{userId}}/posts',
name: 'post'
});
resource.feed = function(context, params) {
return resource.$get(resource.resourceUrl(context) + '/feed', params);
};
return resource;
}
]);
现在,您可以像使用Posts.feed()
一样使用Posts.query()
。