我正在尝试使用 $resource 来了解 AngularJS,但是我看到的大多数示例都没有解释如何使用 $resource 实际创建某些东西的新实例(或者整个设置的外观)。我已经在底部发布了我的代码。
我有以下设置,其中发布到“/entry/api”应该创建一个新条目。它自身的入口对象具有三个属性:名称、描述和标识。
我认为调用 $scope.save(); 会做两件事:
- 将输入字段映射为 POST 数据
- 向 $resource 中定义的 url 发出 POST 请求(在本例中为“/entry/api”)
我见过的一些示例是手动将数据映射到资源,如下所示:
var entry = new Entry();
entry.name = $name; // defined in entryController
entry.description = $scope.description; // <-- defined in entryController
entry.$save()
我认为这不应该是必要的,因为这些字段是在 html.xml 中定义的。该解决方案导致:
- 在后端定义模型
- 在前端定义模型(entryController
div
) - 将 entryController 中的值添加
div
到模型的 JS 版本中,然后最后保存。
这可能是 AngularJS 的工作方式,但是我认为 html 中的输入字段会自动映射。
否则,如果添加或删除(后端)模型的属性,则代码中至少有 3 个位置需要更新。
你应该如何使用 AngularJS$resource
来保存新对象?
angular.module('entryManager', ['ngResource']);
function pollController($scope, $resource) {
$scope.polls = $resource('/entry/api/:id', {id: '@id'});
$scope.saveEntry = function() {
this.save();
}
}
<html ng-app="entryManager">
... <-- include angularjs, resource etc.
<div ng-controller="entryController">
<input type='text' ng-model="name"><br/>
<textarea ng-model="description" required></textarea><br/>
<button class="btn btn-primary" ng-click="saveEntry()">Save</button>
</div>