使用AngularJS$resource执行put操作的好例子

使用AngularJS$resource执行put操作的好例子,angularjs,ngresource,Angularjs,Ngresource,我一直在努力寻找一个使用AngularJS$resource的一致且良好的put操作示例。以下是我想更新但似乎无法更新的示例: 最重要的是,我需要了解在提交表格或我在上面的帖子中提到的投票应用程序中进行看跌期权操作的最佳实践/正常方式。有人有一个很好的例子来演示put吗?如果您要在数据存储中创建一个新实体,您需要使用POST/save。如果要更新与数据存储中已有实体关联的数据,则要使用PUT/update。当您只想更新实体数据的子集时,通常会保留修补程序 看这张照片 扩展超文本传输协议(HTTP

我一直在努力寻找一个使用AngularJS$resource的一致且良好的put操作示例。以下是我想更新但似乎无法更新的示例:


最重要的是,我需要了解在提交表格或我在上面的帖子中提到的投票应用程序中进行看跌期权操作的最佳实践/正常方式。有人有一个很好的例子来演示put吗?

如果您要在数据存储中创建一个新实体,您需要使用POST/save。如果要更新与数据存储中已有实体关联的数据,则要使用PUT/update。当您只想更新实体数据的子集时,通常会保留修补程序

看这张照片

扩展超文本传输协议(HTTP)的几个应用程序 需要一个功能来进行部分资源修改。现存的 HTTP PUT方法只允许完全替换文档。这 该提案添加了一个新的HTTP方法PATCH,以修改现有的HTTP 资源

您将为PUT和修补程序操作提供一个id。您不会为其提供后期操作

当我们加载角形时,通常采用两种方法之一。如果在创建新实体时加载表单,则我们将没有id。我们将在控制器中知道这一点,并将调用resource.save。如果我们为加载表单的控制器提供了一个id,该id用于从端点提取数据以填充表单,那么我们现在就拥有了可以用于执行resource.update或resource.patch操作的id,具体取决于我们正在更新的实体的数量

下面是一个示例save函数,它同时处理更新和保存操作。在这里,在进行资源调用之前,我们检查是否通过路由提供了id

angular.module('appModule').controller('ExampleCtrl',
['$scope', '$routeParams', 
function($scope, $routeParams) {

    $scope.saveForm = function () {

        //Do input validation before you make a resource call

        if ($routeParams.id) {
            //call resource update since we have an id
        }
        else {
            //call resource save since we don't have an id
        }
    };
}]);
以下是angularjs文档中的示例:

如何创建自定义PUT请求:

var app = angular.module('app', ['ngResource', 'ngRoute']);

// Some APIs expect a PUT request in the format URL/object/ID
// Here we are creating an 'update' method
app.factory('Notes', ['$resource', function($resource) {
return $resource('/notes/:id', null,
{
    'update': { method:'PUT' }
});
}]);

// In our controller we get the ID from the URL using ngRoute and $routeParams
// We pass in $routeParams and our Notes factory along with $scope
app.controller('NotesCtrl', ['$scope', '$routeParams', 'Notes',
                               function($scope, $routeParams, Notes) {
// First get a note object from the factory
var note = Notes.get({ id:$routeParams.id });
$id = note.id;

// Now call update passing in the ID first then the object you are updating
Notes.update({ id:$id }, note);

// This will PUT /notes/ID with the note object in the request payload
}]);

不清楚你在找什么。如果对象是新的(没有id),则保存将是POST,如果不是新的,则保存将被放置。你想澄清哪一部分?这正是我想要的信息类型。$resource的Angular文档对于如何使用新数据更新项目有些不清楚。我正在寻找如何构造支持put操作的服务和控制器的示例。到目前为止,我的理解是,在控制器中使用$update并修补服务时,需要明确说明(例如,'update':{method:'PATCH'})。你是说我不需要$update,应该使用类似于发布初始数据的$save吗?很遗憾,你不能将默认的$update()函数设置为使用PUT,因为这样你就可以运行
对象。$save()
和Angular会根据是否有ID自动决定是运行
$update
还是$create`,但随后它会使用POST