Sự khác biệt giữa $ state.transitionTo () và $ state.go () trong Angular ui-router


108

Trong AngularJS, tôi thấy đôi khi chúng tôi sử dụng $state.transitionTo()và đôi khi chúng tôi sử dụng $state.go(). Bất cứ ai có thể cho tôi biết chúng khác nhau như thế nào và khi nào nên sử dụng cái này hơn cái kia?

Câu trả lời:


151

Bạn đang đề cập đến AngularUI Router ? Nếu vậy, wiki chỉ rõ những điểm khác biệt :

$ state.go (tới [, toParams] [, options])

Trả về một Lời hứa đại diện cho trạng thái của quá trình chuyển đổi.

Phương pháp thuận tiện để chuyển đổi sang trạng thái mới. $state.gocuộc gọi $state.transitionTonội bộ nhưng tự động đặt các tùy chọn thành { location: true, inherit: true, relative: $state.$current, notify: true }. Điều này cho phép bạn dễ dàng sử dụng đường dẫn tuyệt đối hoặc tương đối và chỉ chỉ định các tham số bạn muốn cập nhật (trong khi vẫn để các tham số không xác định kế thừa từ trạng thái hiện tại).


$ state.transitionTo (to, toParams [, options])

Trả về một Lời hứa đại diện cho trạng thái của quá trình chuyển đổi.

Phương pháp cấp thấp để chuyển sang trạng thái mới. $state.go()sử dụng transitionTonội bộ. $state.go()được khuyến khích trong hầu hết các tình huống.


1
Tôi tìm thấy thêm thông tin tôi cần từ các liên kết đã cho của bạn. Cảm ơn Brandon rất nhiều :)
Barcelona

1
Rõ ràng, các giá trị được nhập vào chế độ xem không biến mất nếu tôi kích hoạt lại chế độ xem bằng chuyển đổiTo. Dù sao chúng ta có thể buộc làm mới các giá trị / js / view? PS - Trang tải lại không phải là một lựa chọn là quan điểm là một lớp phủ
Swanidhi

10

$state.transitionTochuyển sang trạng thái mới. Trong hầu hết các trường hợp, bạn không cần phải sử dụng nó, bạn có thể thích$state.go .

Nó nhận một số tham số trong một optionsđối tượng:

  • location: Nếu truesẽ cập nhật url trong thanh vị trí, nếu falsesẽ không. Nếu chuỗi "replace", sẽ cập nhật url và cũng thay thế bản ghi lịch sử cuối cùng.
  • inherit: If truesẽ kế thừa các tham số url từ url hiện tại.
  • relative (stateObject, default null) : Khi chuyển đổi với đường dẫn tương đối (ví dụ: '^'), xác định trạng thái tương đối từ đó.
  • notify: Nếu true, sẽ phát sóng $stateChangeStart$stateChangeSuccesscác sự kiện.
  • reload: If truesẽ buộc chuyển đổi ngay cả khi trạng thái hoặc thông số không thay đổi, hay còn gọi là tải lại cùng trạng thái.

$state.golà một loại phím tắt gọi $state.transitionTovới các tùy chọn mặc định:

  • location: true
  • inherit: true
  • relative: $state.$current
  • notify: true
  • reload: false

Nó thuận tiện hơn vì cú pháp đơn giản hơn. Bạn chỉ có thể gọi nó bằng tên tiểu bang.

$state.go('home');
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.