anglejsサイトの「バックエンドの配線」デモコードで、db呼び出しを設定しました。私が知る限り、mongolab apiに必要ないくつかの追加パラメーターを追加するために、更新関数を拡張していることがわかります。
angular.module('mongolab', ['ngResource']).
factory('Project', function($resource) {
var Project = $resource('https://api.mongolab.com/api/1/databases' +
'/angularjs/collections/projects/:id',
{ apiKey: '4f847ad3e4b08a2eed5f3b54' }, {
update: { method: 'PUT' }
}
);
Project.prototype.update = function(cb) {
return Project.update({id: this._id.$oid},
angular.extend({}, this, {_id:undefined}), cb);
};
次に、次のようにupdateプロパティを呼び出します。
$scope.save = function() {
$scope.project.update(function() {
$location.path('/');
});
このコードを使用してローカル開発サーバーを使用してデモアプリを構築しようとしたので、追加の$ oidパラメーターが必要ないため、updateプロパティの拡張を省略しました。私が必要としているのは、更新メソッドがPUTを使用するように指定することです。私のコードは次のようなものです:
var Unit = $resource('http:/localhost/api/unit/:id', {id:'@Unit_Id'},
{'update': { method: 'PUT' }});
そしてそれをこのように呼びます:
$scope.save = function () {
$scope.unit.update(function () {
$location.path('/unitlist');
});
しかし、私が発見したのは、コードが次のように更新の前にドル記号でのみ実行されることです。
$scope.save = function () {
$scope.unit.$update(function () {
$location.path('/unitlist');
});
だからここに私の質問があります:
- デモコードでは、「update」は実際にProject変数のどこに追加されますか?$ resourceのパラメーターとして、またはプロトタイプを使用してProjectを拡張しますか?
- 呼び出すときに$のプレフィックスを付けない限り、コードで更新が未定義になるのはなぜですか?