2014-09-22 16 views
2

如果我有一個資源,例如Restangular放置請求..如何以及爲什麼?

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

,我有我想要發佈到API

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

我可以簡單地做

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

現在,如果我更新了客戶方的模型,並希望JSON對象保存更改,爲什麼我不能這樣做:

resource.put(thingId, updatedJsonObj) 

我在互聯網上的演示中遇到了麻煩,因爲他們似乎都需要在獲得請求之前先做出請求,然後才能做出投放?這看起來很奇怪。值得一提的是,我在SERVICE中使用Restangular,而不是在控制器或指令中使用。我的服務有一個變量allMyThings這是resource.getList()的結果,我用在不同的地方在應用

回答

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屬性作爲ID爲PUTDELETE,等電話。 如果你想改變這種行爲,在模塊配置使用:

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

我如何使用ID來獲得我想要的特定記錄?例如,而不是'myList [0]'我想'myList [記錄其中id是28]' – ptr 2014-09-23 07:19:10

+0

如果我澄清了我的確切目標,我可以使用角度服務來公開兩個列表'listOfAllThings'和'listOfSelectedThings'用戶從'listOfAllThings'中選擇事物,並將它們推送到選定的列表中。在選定的列表中,這些事物的模型可以被編輯並且屬性被改變,然後我想把這些改變放回到數據庫中。 – ptr 2014-09-23 07:24:27

+0

我希望PUT能夠回覆承諾,以便我可以處理成功/失敗 – ptr 2014-09-23 07:54:26

相關問題