2013-05-22 27 views
5

Tôi đang cố gắng cập nhật danh sách các tài nguyên khi người dùng tương tác với tài nguyên đó. Sử dụng AngularJS ngResource ban đầu tôi lấy danh sách bằng cách sử dụng phương thức query của nó. Mỗi tài nguyên sau đó có phương thức $remove (hoặc $delete), phải không? Nhưng khi bị sa thải, tài nguyên không bị xóa khỏi danh sách được trả lại từ query.AngularJS ngResource xóa sự kiện

Điều này đòi hỏi rất nhiều, tôi biết, nhưng tôi gần như đã hy vọng nó sẽ làm mọi thứ cho tôi. Lưu nó, làm thế nào tôi có thể thực hiện điều này. Bản thân tài nguyên có phát ra một loại sự kiện nào đó không? Liệu nó có một tài sản bị xóa tôi có thể $watch? Làm thế nào tôi sẽ đi về biết rằng một nguồn lực là $remove 'd vì vậy tôi có thể ghép nó ra khỏi danh sách?

Cảm ơn.

+0

Mã bạn đang đề cập đến ở đâu? –

+0

Đó là một sự xấu hổ thực sự nó không xử lý này của chính nó. Nó có vẻ giống như một điều rất rõ ràng để làm. –

Trả lời

6

Bạn phải sử dụng phương thức 'splice để xóa nó ($index là chỉ mục ẩn của ng-repeat).

$scope.removeItem = function (index) { 
    $scope.items[index].$delete(); 
    $scope.items.splice(index, 1); 
} 

Và rồi trong HTML của bạn

<a ng-click="removeItem($index)">remove me</a> 
+0

Điều này sẽ làm việc hầu hết thời gian, nhưng điều gì sẽ xảy ra khi có một số loại lỗi phía máy chủ. Giao diện người dùng của bạn sẽ không còn phản ánh đúng trạng thái. – testing123

+0

thì bạn có thể chuyển nó như một cuộc gọi lại, tôi nghĩ :) – Ven

2

Chỉ cần sử dụng chức năng thành công callback:

instance.$action([parameters], [success], [error]) 

Đối với bạn tôi đoán đó sẽ là một cái gì đó như:

myResource.$delete([parameters], function() { 
    //delete was successful 
}); 
Các vấn đề liên quan