2013-09-20 4 views
9

io non riesco a capire questo -Restangular - Get oggetto w/id, modificare oggetto, oggetto di aggiornamento

voglio fare qualcosa di simile:

content = Restangular.one('contents', 2).get() 
content.name = "Chunky Bacon" 
content.put() 

Ma questo non funziona - content non hanno una funzione put, ed è interessante notare, non ha un name, sia (è che perché è una "promessa"?)

Ora, la documentazione Restangular non descrivono l'aggiornamento di un oggetto, ma si ottenere quell'oggetto come parte di una collezione:

content_id2 = Restangular.all("contents").getList()[2] 
content_id2.name = "Chunky Bacon" 
content_id2.put() 

E questo funziona. Ma! Non solo ho recuperato l'intera lista, non riesco a capire come ottenere facilmente i miei contenuti dal suo ID; qualcosa come Restangular.all("contents").getList().find(2)

customPUT(..) sembra che la prossima scommessa migliore:

Restangular.one("contents", 2).customPUT("", {"content" : {"name" : "Chunky Bacon"} }) 

Solo quando il server riceve Rails, params["content"] == {id: 2} - sembra che qualcosa sul lato client è stomping tale valore. (Ancora, nota, nessun campo name). Ora, posso lavorare intorno ad esso semplicemente facendo qualcosa di simile:

Restangular.one("contents", 2).customPUT("", {"content_data" : {"name" : "Chunky Bacon"}) 

ma sembra davvero come mi manca solo come si suppone di fare questo.

risposta

14

Va bene, l'ho trovato, grazie a this question:

#In the beginning: 
Restangular.one("content", 2).get().then(function(c){ 
    $scope.content = c 
}) 

#Elsewhere: 
$scope.content.name = "Chunky Bacon" 

#Finally: 
$scope.content.put() 
+0

che ho fatto lo stesso ed ottengo ancora l'errore "oggetto non trovato" quando chiamo la funzione di 'mettere'. – Asqan

+0

Ciò è dovuto al fatto che Restangular promises e il modo in cui i valori vengono utilizzati direttamente nei modelli modificati: https://github.com/mgonto/restangular#element-methods –