2013-09-23 43 views
5

tôi đã thiết lập một ứng dụng với 2 trạng thái, A và AB làm theo cách này:AngularJS bang ui-router không refresh trên lưng

$stateProvider.state('A', { 
     url: "/A/{aId}", 
     controller: 'AController', 
     templateUrl: function($stateParams) { 
      return "/A/" + $stateParams.aId + "/layout"; 
     } 
    }).state('A.B', { 
     url: "/B/{bId}", 
     controller: 'BController', 
     templateUrl: function($stateParams) { 
      return "/A/" + $stateParams.aId + "/B/" + $stateParams.bId+ "/layout"; 
     } 
    }); 

Khi tôi đang ở trong trạng thái AB (url sẽ somthing như #/A/12/B/123) và quay trở lại bằng cách sử dụng nút quay lại của trình duyệt hoặc chuyển đổiĐể thay đổi url, trạng thái AB bị xóa nhưng trạng thái A không hiển thị lại. Theo như tôi có thể nói với bộ điều khiển không được kích hoạt.

Vì vậy, nếu tôi ở A/12/B/123 và quay lại A/12 thì không có gì xảy ra, nhưng nếu tôi quay lại A/13 (sử dụng transitionTo), nó sẽ hiển thị.

Trên ứng dụng mẫu từ dự án góc-ui-router, kịch bản này hoạt động tốt, vì vậy tôi nghĩ có thể có sự cố trong thiết lập của tôi. Tôi nghĩ rằng điều đáng nói đến là trên index.html tôi có một giao diện ui xem trạng thái tải A và mẫu cho trạng thái A có một giao diện ui khác tải trạng thái AB

Nếu có ai có thể trợ giúp, tôi thực sự đánh giá cao nó

+1

Tôi tin rằng vẫn còn là một vấn đề mở về vấn đề này: https: // github .com/angular-ui/ui-router/issues/52 –

+0

Vâng, tôi thấy vấn đề đó nhưng hành vi tôi mô tả hoạt động tốt trong ứng dụng mẫu của họ. http://angular-ui.github.io/ui-router/sample/ – Grig

+0

Bạn có thể đăng Plunkr thể hiện sự cố không? Đây là hành vi khá chuẩn, thường hoạt động tốt trong mọi trường hợp. –

Trả lời

0

bạn đã cố gắng sử dụng này:

$ state.reload()

của một phương pháp mà buộc load lại tình trạng hiện thời. Tất cả các giải quyết được tái giải quyết, sự kiện không tái bị sa thải, và bộ điều khiển reinstantiated

Đây chỉ là một bí danh cho:

$state.transitionTo($state.current, $stateParams, { 
     reload: true, inherit: false, notify: false 
    });