刚开始使用AngularJS& js(作为后端开发人员),这是我曾经工作过的第一个Javascript MVC框架,所以请放心......
我有一个宁静的json API,我想使用AngularJS消费。
为了实现这一点,我创建了两个工厂,一个是控制器需要查询带有id的工厂时的单个工厂,另一个是不需要id的工厂。
e.g。下面:
控制器列出所有产品:
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
方法是否需要?
答案 0 :(得分:1)
是的,您只能使用1个工厂:
app.factory('ProductFactory', function($resource) {
return $resource('/xxx/xxx/xxx/api/v1/product/:id', { id : '@id'}, {
update: { method: 'PUT' },
});
});
您不需要为每个请求指定'params'对象。为$资源定义它通常就足够了(但如果你想覆盖它,你当然可以使用它。)
请注意,您不需要定义CRUD方法,因为$ resource已经实现了它们(如doc:http://docs.angularjs.or/api/ngResource。$ resource中所述)。
目前,如果您想使用“PUT”但是打开拉取请求(https://github.com/angular/angular.js/pull/3416),您只需要定义自定义方法更新,我希望我们能够很快看到它实现。< / p>