2015-02-10 14 views
36

Tôi có trạng thái Danh sách sản phẩm và Chỉnh sửa sản phẩm/Thêm trạng thái trong ứng dụng Góc của tôi. Danh sách

sản phẩm dữ liệu được nạp trong bộ điều khiển (Tôi không nghĩ rằng tôi cần giải quyết phải được xác định trong cấu hình nhà nước) mà nhận dữ liệu từ một ngResource:

function InventoryListCtrl (myResource) { 
    var vm = this; 

    myResource.query(function (data) { 
    vm.products = data; 
    }); 
} 

On Sửa Controller, sau khi tôi chỉnh sửa một sản phẩm tôi quay trở lại trạng thái danh sách như sau:

vm.product.$update().$promise; 
$state.go('productList'); 

Không hiển thị dữ liệu cũ trong lần chạy đầu tiên, sau khi cập nhật lần 2 và quay lại trạng thái danh sách theo cách thủ công nó bắt đầu làm mới sau mỗi lần cập nhật.

Tôi đã thử điều này, nhưng đã không làm việc một trong hai:

vm.product.$update().$promise; 
$state.go('productList', {}, { reload: true }); 

tôi thiếu gì?

Trả lời

78

Tôi nghĩ rằng bạn đang tải trạng thái mới trước khi cập nhật đã hoàn thành - thử di chuyển chuyển trạng thái để sau khi hoàn thành bản cập nhật:

vm.product.$update().then(function(){ 
    $state.go('productList', {}, { reload: true }); 
}); 
+1

Tôi đã sai lầm khi viết lời hứa $ sau phương thức ngResource. Câu trả lời của bạn là đúng. Cảm ơn – Bogac

+0

Không phải những gì OP đã hỏi nhưng đó là điều tôi ước mình đã học sớm hơn. Nếu bạn chỉ muốn tải lại trạng thái con, bạn cần phải thay đổi "tải lại: true" để có tên trạng thái con thay vì đúng như được hiển thị ở đây: http://stackoverflow.com/questions/25316591/angularjs-ui-router-state -chỉ tải-con-nhà-chỉ-31887658 # 31887658 –

+1

Nó không hoạt động trên IE (phiên bản 11) – Jerome2606

13

tôi nghĩ rằng điều này sẽ làm việc cho refresh tình trạng hiện thời.

$state.go($state.current, {}, {reload: true}); //second parameter is for $stateParams 
+1

Đây phải là câu trả lời được chấp nhận. Đã làm cho tôi. –

+2

Điều này cũng làm việc cho tôi, được bao bọc bên trong một cú nhấp chuột như 'ng-click =" $ state.go ('trang tổng quan', {}, {reload: true}) " – tommymcdonald

3

Tôi gặp vấn đề tương tự với danh sách không làm mới sau khi chỉnh sửa. Gói $ state.go trong hàm $ timeout đã giải quyết được vấn đề của tôi.

$timeout(function(){ 
    $state.go('publishers.list', {}, { reload: true }); 
},200); 
Các vấn đề liên quan