$resource を使用して AngularJS を理解しようとしていますが、私が目にするほとんどの例では、$resource を使用して何かの新しいインスタンスを実際に作成する方法 (またはセットアップ全体がどのように見えるべきか) を説明していません。このコードの一番下にコードを掲載しました。
「/entry/api」に投稿すると新しいエントリが作成される、次の設定があります。エントリ オブジェクト自体には、名前、説明、および ID の 3 つのプロパティがあります。
$scope.save(); を呼び出すと思いました。次の 2 つのことを行います。
- 入力フィールドを POST データとしてマップする
- $resource で定義された URL (この場合は「/entry/api」) に POST リクエストを送信します。
私が見たいくつかの例では、データをリソースに手動でマッピングしています。
var entry = new Entry();
entry.name = $name; // defined in entryController
entry.description = $scope.description; // <-- defined in entryController
entry.$save()
これらのフィールドはhtmlで定義されているため、これは必要ではないと思いました。このソリューションにより、次の結果が得られます。
- バックエンドでモデルを定義する
- フロントエンドでのモデルの定義 ( entryController
div
) - entryController の値を
div
JS バージョンのモデルに追加し、最後に保存します。
AngularJS の仕組みなのかもしれませんが、html の入力フィールドは自動的にマッピングされると思いました。
それ以外の場合は、(バックエンド) モデルのプロパティを追加または削除する場合に、コード内に更新する場所が少なくとも 3 つあります。
$resource
新しいオブジェクトを保存するために AngularJS をどのように使用するのですか?
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>