【发布时间】:2015-07-07 07:13:25
【问题描述】:
非 GET 实例操作 $save 在我的示例中不起作用。我总是得到错误,$save 不是函数。问题是,我不知道我必须在哪里定义$scope.example = new Resource();,因为在我的示例中我使用了 2 个控制器。一个用于包含对象的表格列表,另一个用于我的模式窗口,您可以在其中进行 CRUD 操作。 CRUD 操作在 Angular 服务中定义。
代码结构如下:
资源服务:
...
return {
name: $resource(baseUrl + '/api/name/:Id', {
Id: '@Id'
}, {
'update': {
method: 'PUT'
}
}),
...
CRUD 的服务:
...
return {
create: function (newName) {
return newName.$save();
},
...
模态窗口的Ctrl:
$scope.selected = new resService.name();
$scope.createItem = function (newName) {
CrudService.create(newName).then(
function () {
$scope.dataSuccess = 'Person created.';
$scope.newName = null;
},
function (err) {
$scope.dataError = err.data.ModelState;
});
}
}
$scope.form = [{
label: 'Firstname',
fieldType: 'text',
name: 'Fname',
id: 'fname-id',
propertyName: 'fname',
disabled: false,
pattern: /^[a-zA-Z]{4}[a-zA-Z]*/,
required: true,
errRequired: 'Firstname is required.',
errPattern: 'Firstname has at least 4 letters.'
},
...];
带表单的视图:
<form class="form-horizontal" name="editForm" novalidate>
<div class="form-group-sm has-feedback" ng-repeat="elem in form" ng-class="{ 'has-error' : hasError(editForm, elem.name), 'has-success' : hasSuccess(editForm, elem.name) }">
<label class="control-label" for="{{elem.id}}">{{elem.label}}</label>
<input type="{{elem.fieldType}}"
class="form-control"
placeholder="{{elem.label}}"
name="{{elem.name}}"
id="{{elem.id}}"
ng-model="selected[elem.propertyName]"
ng-disabled="{{elem.disabled}}"
ng-pattern="elem.pattern"
ng-required="{{elem.required}}"
/>
<p class="help-block" ng-if="elem.errRequired" ng-show="editForm[elem.name].$error.required && editForm[elem.name].$touched">{{elem.errRequired}}</p>
<p class="help-block" ng-if="elem.errPattern" ng-show="editForm[elem.name].$error.pattern">{{elem.errPattern}}</p>
编辑:
我得到一个新的错误。控制台告诉我,我必须使用track by 表达式。但我试图使用表单视图而不生成然后工作。但我需要生成的表单视图(上面的示例视图)。
错误信息:
错误:ngRepeat:dupes 中继器中的重复键
不允许在转发器中重复。使用“track by”表达式指定唯一键。
【问题讨论】:
-
没人能帮我吗? :(
-
请把详细的代码与工厂或服务名称一起。
-
@RIYAJKHAN 等一下,我会更新我的帖子。
-
@RIYAJKHAN 帖子已更新 :)
-
我有一些问题 - 1. 在模态窗口的 Ctrl 部分中,如何在“$scope.createItem”函数中获得“newName”?
标签: javascript angularjs crud angularjs-service angular-resource