AngularJS-检查我的资源工厂的实现
AngularJS - Check my implementation of resource factory
刚开始使用AngularJS&js(作为一名后端开发人员),这是我开发过的第一个Javascript MVC框架,所以请轻松。。。
我有一个restful json API,我想使用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:有没有一种方法可以只使用一个工厂生产产品?例如,允许工厂决定id对于query
和create
不是必需的,但是对于show
、update
和delete
方法是必需的?
是的,您只能使用一个工厂:
app.factory('ProductFactory', function($resource) {
return $resource('/xxx/xxx/xxx/api/v1/product/:id', { id : '@id'}, {
update: { method: 'PUT' },
});
});
您不需要为每个请求指定"params"对象。为$resource定义它通常就足够了(但如果您想覆盖它,当然可以使用它)。
请注意,您不需要定义CRUD方法,因为$resource已经实现了它们(如文档中所述:http://docs.angularjs.or/api/ngResource.$resource)。
目前,如果您想使用"PUT",但打开了一个pull请求,则只需要定义一个自定义方法更新(https://github.com/angular/angular.js/pull/3416)我希望我们能够期待它很快得到实施。
相关文章:
- 如何使用动画实现纸张推车
- 客户端服务器REST API captcha实现
- 如何实现此布局
- Angularjs工厂注入错误
- 如何将参数传递到angularJs中的工厂
- Meteor忘记了密码的实现
- 使用Native Sockets在Android中实现WebSockets
- 在样板文件中实现Ajax
- 为什么只有工厂在棱角分明的网站上被提及
- instanceof是如何在JavaScript中实现的
- 如何正确实现Jquery多选小部件
- 实现一个建立在google.com之上的自定义搜索引擎
- AngularJS:$q.dedefe()不能由工厂方法共享
- 多个组件是如何实现的
- window.location使用jquery mobile实现chrome跳转
- AngularJS-检查我的资源工厂的实现
- Angularjs:实现与工厂相同的服务结构
- "超过了最大调用堆栈大小“;在处理JS时实现Fractal工厂时出错
- 对象文本内部的工厂模式,以实现可迭代性和反射性
- 实现一个模态工厂