2016-09-13 26 views
12

Giả sử rằng chúng ta có một logic như thế này:Thay đổi trạng thái mà không thay đổi lịch sử trình duyệt ở góc ui-router

  • Từ trạng thái A, thay đổi trạng thái B.
  • Bất cứ khi nào chúng tôi đến trạng thái B, ứng dụng luôn chuyển hướng chúng ta nêu C bằng cách gọi $state.go(stateC)
  • Bây giờ chúng ta đang ở trạng thái C

câu hỏi của tôi là làm thế nào để trở về trạng thái A từ trạng thái C (do thực tế là nhà nước A có thể là bất kỳ nhà nước, chúng tôi don không biết chạy -time, nghĩa là người dùng có thể truy cập trạng thái B từ bất kỳ trạng thái nào khác)

Trả lời

21

Sử dụng tùy chọn location với giá trị "thay thế" ...

$state.go(stateC, null, { 
    location: 'replace' 
}) 

Xem https://angular-ui.github.io/ui-router/site/#/api/ui.router.state.$state#methods_go

vị trí - {boolean = true | string =} - Nếu true sẽ cập nhật url trong thanh vị trí, nếu false thì không. Nếu chuỗi, phải là "replace", sẽ cập nhật url và cũng có thể thay thế bản ghi lịch sử cuối cùng.

+0

Chính xác những gì tôi cần! Cảm ơn bạn rất nhiều. –

-1

Bạn có thể theo dõi trạng thái đã truy cập trong dịch vụ và sau đó chỉ cần gọi $ state.go ở trạng thái trước đó.

Bạn có thể xem các thay đổi trạng thái như vậy:

$rootScope.$on('$stateChangeStart', 
function(event, toState, toParams, fromState, fromParams){ 
    // add fromState to history 
}); 

How to $watch state change of $stateProvider in AngularJS?

Các vấn đề liên quan