如何在使用工厂模式时创建一个空$资源
How to create an empty $resource when using the factory pattern
我在工厂模式中使用angular $resource,在那里它被注入,所以我只需要在一个地方创建一次模板。这工作。
我似乎找不到关于如何创建新资源对象的任何文档。当需要保存时,这会创建条件分支,因为我没有对象可以调用$save()。
例如:假设我有这样的资源:
myService.factory('myWidget', [ '$resource',
function($resource){
return $resource('/my/widget/:id', {
[...]
所以我的控制器可以很容易地访问myWidget:
function( $scope, ... myWidget ) {
$scope.widget = myWidget.get({id: 'myId'});
$scope.save = function() {
$scope.widget.$save(); // plus progress dialog error handling etc
};
}
这是非常干净和令人敬畏的,因为它应该是。但是,如果我想创建一个新的,我需要创建和保存的条件代码。
function( $scope, ... myWidget, mode ) {
if (mode === 'create') {
$scope.widget = {
id: 'myNewId',
property: <lots and lots of properties>
};
}
else {
$scope.widget = myWidget.get({id: 'myId'});
}
$scope.save = function() {
$scope.widget.$save(); // Not a $resource; $save() does not exist
};
}
显然,我可以在save()中放入条件代码,或者我可以将小部件作为参数传递,如myWidget.save($scope.widget),但这似乎很蹩脚。没有简单的方法从工厂中创建一个新的$资源吗?即:
if (mode === 'create') {
$scope.widget = myWidget.new({
id: 'myNewId',
property: <lots and lots of properties>
});
}
在功能上相当于:
if (mode === 'create') {
$scope.widget = $resource('/my/widget/:id');
但显然不需要复制工厂中的资源代码。
当然有一些简单的语法可以做到这一点。是吗?
我正在使用AngularJS 1.3。我真的希望这是一个愚蠢的问题,因为它似乎是一个明显的用例。甚至Backbone也有一种方法可以用默认值创建一个新的rest支持的对象。:)谢谢。
(也许问题应该是"我如何使用angularjs工厂来创建一个对象,就好像我是注入器一样?")
您需要创建一个新的小部件:
if (mode === 'create') {
$scope.widget = new myWidget();
$scope.widget = {
id: 'myNewId',
property: <lots and lots of properties>
};
}
相关文章:
- WebResources嵌入式资源和Javascript如何在另一个嵌入式资源中使用它们
- AngularJS多资源调用,只处理最后一个
- 检查资源的id是否在ng重复中显示的另一个资源的id列表中
- 关于如何使用BusterJs资源配置选项的一个好例子
- 完整日历在多个资源上添加一个事件
- 给定一个 url,脚本如何找到加载的资源
- 我得到了一个“;未能加载资源“;在尝试运行空白离子启动器应用程序时出现Cordova错误
- 如何使用Angular 2服务提供包含指向另一个资源的链接/ids的资源集合
- 是否有任何事件在浏览器请求另一个资源(如图像)之前触发
- 从另一个域加载 CSS 和 JS 文件,并从一致的 URL 提供资源
- AngularJS,创建一个资源哈希
- 一个简单窗口的计算资源密集度.包含函数
- Angularjs资源错误:a.push不是一个函数
- 一个程序PhantomJS如何等待AngularJS$资源解析,然后再尝试测试返回的数据
- 从另一个javascript网络资源调用javascript函数
- servlet过滤器中的静态资源版本控制(添加一个额外的GET参数)
- Javascript' setInterval循环是一个资源消耗者吗?
- 如何在iOS cordova项目中从objective C返回一个资源url到javascript
- 用ngResource、socket维护一个资源集合.IO和$q
- 如何在angularjs中传递一个JSON对象给一个资源