2013-09-20 85 views
9

tôi dường như không thể con số này ra -Restangular - Nhận đối tượng w/id, chỉnh sửa đối tượng, cập nhật đối tượng

tôi muốn làm một cái gì đó như:

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

Nhưng điều này không làm việc - content không có chức năng put, và thú vị là nó không có name, hoặc (có phải vì đó là "lời hứa" không?)

Hiện tại, tài liệu Restangular mô tả việc cập nhật một đối tượng, nhưng bạn lấy đối tượng đó như một phần của bộ sưu tập:

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

Và tính năng này hoạt động. Nhưng! Không chỉ tôi lấy toàn bộ danh sách, tôi không thể tìm ra cách dễ dàng lấy nội dung của mình bằng ID của nó; cái gì đó như Restangular.all("contents").getList().find(2)

customPUT(..) có vẻ như đặt cược tốt nhất tiếp theo:

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

Chỉ khi máy chủ Rails nhận nó, params["content"] == {id: 2} - nó có vẻ như một cái gì đó trên các mặt hàng được dậm giá trị đó. (Xin lưu ý, không có trường name). Bây giờ, tôi có thể làm việc xung quanh nó chỉ đơn giản bằng cách làm một cái gì đó như:

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

nhưng thực sự có vẻ như tôi chỉ thiếu cách bạn phải làm điều này.

Trả lời

14

Alright, tìm thấy nó, nhờ 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

tôi đã làm điều tương tự và tôi nhận được vẫn còn lỗi "đối tượng không tìm thấy" khi tôi gọi hàm 'đặt'. – Asqan

+0

Đó là vì lời hứa về Restangular và cách thức các giá trị được sử dụng trực tiếp trong các mẫu đã thay đổi: https://github.com/mgonto/restangular#element-methods –