Sai lầm của tôi giả định rằng có một cách đặc biệt, tích hợp để làm điều này trong xương sống. Không có.
Đơn giản chỉ cần chạy dòng sau mã
window.history.pushState('object or string', 'Title', '/new-url');
sẽ gây ra URL của trình duyệt để thay đổi mà không tải lại trang. Bạn có thể mở bảng điều khiển javascript trong trình duyệt của mình ngay bây giờ và dùng thử với trang này. This article giải thích cách hoạt động chi tiết hơn (như được ghi chú trong this SO post).
Bây giờ tôi đã chỉ ràng buộc các sự kiện sau đây để các đối tượng tài liệu (Tôi đang chạy một trang web trang duy nhất):
bindEvents:() ->
$(document).on('click', 'a', @pushstateClick)
pushstateClick: (e) ->
href = e.target.href || $(e.target).parents('a')[0].href
if MyApp.isOutsideLink(href) == false
if e.metaKey
#don't do anything if the user is holding down ctrl or cmd;
#let the link open up in a new tab
else
e.preventDefault()
window.history.pushState('', '', href);
Backbone.history.checkUrl()
Xem this post để biết thêm.
Lưu ý rằng bạn CÓ THỂ chuyển tùy chọn pushstate: true
cho cuộc gọi của bạn tới Backbone.history.start(), nhưng điều này chỉ làm cho việc điều hướng trực tiếp đến một trang nhất định (ví dụ example.com/exampleuser/followers) sẽ kích hoạt tuyến đường trục chính thay vì đơn giản dẫn đến hư không.
Nguồn
2013-07-10 10:56:23
Bạn cũng có thể gọi 'window.location = '/ # /' + page_uri;' để kích hoạt tuyến đường của đường trục. –
@Sven Ở đây mặc dù mối quan tâm của tôi đang làm việc với các tuyến đường thực tế - tức là định tuyến không có '#' –
'Backbone.Router's có một phương pháp [' điều hướng'] (http://backbonejs.org/#Router-navigate) kể từ phiên bản 0.9.0. –