【问题标题】:AngularJS: How can I change $save() http method for newly created $resource instancesAngularJS:如何更改新创建的 $resource 实例的 $save() http 方法
【发布时间】:2014-07-28 19:14:55
【问题描述】:

我正在使用 AngularJS 构建一个应用程序,并希望为我的应用程序使用 REST 方法。 这就是我决定使用 ngResource 的原因。

通常 ngResource 用于创建所有 CRUD 操作。在这种情况下,它工作顺利。 但在我的情况下,我需要使用 ng-init 从视图中检索数据(通常由 ResourceClass.get(params) 获取)。

所以我不能这样做:

Item = $resource('http://some_url/:id');
item = Item.get({id: some_id});

相反,如果我需要创建新项目或更新现有项目,我每次都需要创建 $resource 的新实例。所以我的代码是这样的:

Item = $resource('http://some_url/:id');
item = new Item(some_data);

所以当我使用 then item.$save() 时,它每次都会创建 POST 请求,因为它不知道我不想存储项目而是更新现有的。

问题是: 如果我可以告诉 ngResource 有时在 $save() 操作上使用 PUT?

item.$save({id: some_id}) 不起作用

【问题讨论】:

    标签: javascript angularjs angular-resource


    【解决方案1】:

    您可以使用 $update 来发出 put 请求,请参见下文:

    app.factory("item", function ($resource)
        {
            return $resource(
                "/api/item/:Id",
                { Id: "@Id" },
                {
                    "update": { method: "PUT" }
    
                }
           );
        });
    

    然后

    item.$update({id: some_id})
    

    【讨论】:

    • 谢谢。看过 angular-resource 源代码。如果使用 POST 或 PUT,似乎它不支持自动跟踪。因此,需要根据项目是否具有 id 显式调用 $update() 或 $save()。
    猜你喜欢
    • 1970-01-01
    • 2014-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-24
    相关资源
    最近更新 更多