刚开始使用AngularJS & js (作为后端开发人员),这是我曾经研究过的第一个Javascript框架,所以请轻松.
我有一个restful,我想使用AngularJS来使用它。
为了实现这一点,我创建了两个工厂,一个用于控制器需要使用id查询工厂,另一个用于在不需要id时使用复数工厂。
例如,下文:
主计长列出所有产品:
app.controller('ProductController', function($scope, ProductsFactory) {
$scope.products = [];
init();
function init()
{
$scope.products = ProductsFactory.query();
}
});工厂:
app.factory('ProductsFactory', function($resource) {
return $resource('/xxx/xxx/xxx/api/v1/product', {}, {
query: { method: 'GET', isArray: true },
create: { method: 'POST' }
});
});
app.factory('ProductFactory', function($resource) {
return $resource('/xxx/xxx/xxx/api/v1/product/:id', {}, {
show: { method: 'GET' },
update: { method: 'PUT', params: { id: '@id' } },
delete: { method: 'DELETE', params: { id: '@id' } }
});
});问题1:我是否正确地实现了资源工厂?问题2:是否有一种方法只使用一家工厂生产产品?例如,允许工厂决定query和create不需要id,但是show、update和delete方法需要id?
发布于 2013-12-16 13:34:06
是的,你只需要一个工厂:
app.factory('ProductFactory', function($resource) {
return $resource('/xxx/xxx/xxx/api/v1/product/:id', { id : '@id'}, {
update: { method: 'PUT' },
});
});您不需要为每个请求指定“params”对象。为$resource定义它通常已经足够了(但是如果您想要覆盖它,当然可以使用它)。
注意,您不需要定义CRUD方法,因为$resource已经实现了这些方法(如doc:http://docs.angularjs.or/api/ngResource.$resource中所述)。
目前,如果您想使用"PUT“,只需要定义一个定制的方法更新,但是会打开一个拉请求(https://github.com/angular/angular.js/pull/3416),我希望我们能看到它很快实现。
https://stackoverflow.com/questions/20611938
复制相似问题