【问题标题】:Restangular put requests.. how and why?Restangular put请求..如何以及为什么?
【发布时间】:2014-09-22 15:28:59
【问题描述】:

如果我有资源,例如

var resource = Restangular.all('things');

我有想要发布到 API 的 json 对象

jsonObj = {
  someVar: "x",
  anotherVar: "y"
}

我可以做到

resource.post(jsonObj).then( ...etc... )

现在如果我在客户端更新模型并想保存更改,为什么不能这样做:

resource.put(thingId, updatedJsonObj)

我无法理解互联网上的演示,因为它们似乎都需要先执行 get 请求才能执行 put?这似乎很奇怪。值得一提的是,我在 SERVICE 中使用 Restangular,而不是在控制器或指令中。我的服务有一个变量 allMyThings,它是 resource.getList() 的结果,我在应用程序的各个地方使用它

【问题讨论】:

    标签: angularjs restangular


    【解决方案1】:

    实际上,如果你在getList()返回的集合中取一项,你可以在它上面使用.save(),它会调用PUT方法。

    angular.module('demo').controller('DemoCtrl', function (myList) {
    
      // myList is populated by Restangular.all('...').getList();
    
      var item = myList[0];
    
      item.name = 'foo';
    
      item.save()                // this one did a PUT :)
        .then(function (res) {
           // ...
        });
    
    });
    

    See it in the docs.

    注意:

    Restangular 将使用id 属性作为PUTDELETE 等调用的ID。 如果您想更改该行为,请在模块配置中使用它:

    RestangularProvider.setRestangularFields({
      id: "_id"
    });
    

    【讨论】:

    • 如何使用id获取我想要的具体记录?例如,我想要myList[record where id is 28]而不是myList[0]
    • 如果我澄清我的确切目标可能会有所帮助,我有一个角度服务,用于公开两个列表,listOfAllThingslistOfSelectedThings 用户从listOfAllThings 中选择内容,他们得到推入选定列表。在选定的列表中,可以编辑这些东西的模型并更改属性,然后我想将这些更改放回数据库。
    • 我希望 PUT 返回一个承诺,以便我可以处理成功/失败
    猜你喜欢
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-31
    • 1970-01-01
    • 1970-01-01
    • 2019-01-04
    相关资源
    最近更新 更多