Sử dụng Backbone.js, có thể làm cho bộ định tuyến điều hướng đến trang mà nó đến từ đâu không? Tôi muốn sử dụng điều đó cho trường hợp tôi thay đổi URL của mình khi cửa sổ bật lên xuất hiện và tôi muốn thay đổi lại khi tôi ẩn cửa sổ bật lên. Tôi không muốn đơn giản quay trở lại, vì tôi muốn giữ trang nền ở chính xác vị trí giống như tôi đã để nó trước khi tôi hiển thị cửa sổ bật lênChuyển im lặng thành url trước bằng cách sử dụng Backbone.js
Trả lời
Bạn có thể giải quyết vấn đề này bằng cách mở rộng Backbone.Router
và lưu trữ tất cả các tuyến đường trong khi điều hướng.
class MyRouter extends Backbone.Router
constructor: (options) ->
@on "all", @storeRoute
@history = []
super options
storeRoute: ->
@history.push Backbone.history.fragment
previous: ->
if @history.length > 1
@navigate @history[@history.length-2], true
Sau đó, khi bạn phải bỏ phương thức của bạn, chỉ cần gọi MyRouter.previous()
phương pháp mà nó sẽ chuyển hướng bạn trở lại "băm" cuối cùng.
Bạn có thể kích hoạt tuyến đường trong onCloseEvent của cửa sổ bật lên hoặc lớp phủ của bạn :
router.navigate('/lasturl/');
Điều này sẽ đặt url. Nếu bạn vượt qua true như param thứ hai, bạn cũng sẽ thực hiện hành động route. Nếu không, trang sẽ được giữ nguyên.
Tất nhiên, nhưng một lần nữa câu hỏi là, làm cách nào để biết url cuối cùng là gì? Backbone có cung cấp một phương thức hữu ích hay tôi sẽ phải lấy nó từ window.history? – user802232
Tôi nghĩ rằng câu trả lời của mateusmaso chủ yếu là đúng nhưng yêu cầu một số chỉnh sửa để bảo đảm rằng bạn luôn nhận đúng URL bạn đang tìm kiếm.
Trước tiên, bạn cần phải ghi đè phương pháp lộ trình để có một phương pháp beforeRoute lửa:
route: (route, name, callback) =>
Backbone.Router.prototype.route.call(this, route, name, =>
@trigger('beforeRoute')
callback.apply(this, arguments)
)
Sau đó, bạn gắn kết sự kiện này và khởi tạo các biến dụ lịch sử:
initialize: (options) ->
@history = []
@on "beforeRoute", @storeRoute
Tiếp theo, tạo phương pháp helper cho lưu trữ và truy xuất phân đoạn:
storeRoute: =>
@history.push Backbone.history.fragment
previousFragment: =>
@history[@history.length-2]
Cuối cùng, bạn cần một phương thức trợ giúp cuối cùng có thể được sử dụng để thay đổi URL mà không cần tải lại và lưu trữ đoạn kết quả. Bạn cần sử dụng điều này khi đóng cửa sổ bật lên hoặc bạn sẽ không có đoạn mong đợi trong lịch sử của mình nếu người dùng nhận được cửa sổ bật lên một lần nữa mà không cần điều hướng đến bất kỳ nơi nào khác. Điều này là do việc điều hướng gọi mà không có "trigger: true" sẽ không kích hoạt trình xử lý sự kiện để lưu trữ đoạn.
changeAndStoreFragment: (fragment) =>
@navigate(fragment)
@storeRoute()
Câu trả lời này có thể không giải quyết được câu hỏi, nhưng đó cũng chính là vấn đề tương tự. Tôi không thể điều hướng âm thầm đến tuyến đường trước đó hoặc tuyến đường tùy chỉnh do dấu gạch chéo. Để các hàm tuyến đường KHÔNG được kích hoạt, hãy sử dụng {trigger:false}
hoặc không sử dụng trình kích hoạt nào vì false
là hành vi mặc định và đảm bảo tuyến đường của bạn bắt đầu bằng #something
thay vì '#/something' (chú ý dấu gạch chéo) hoặc thay đổi regEx bên trong Backbone.js, phần bộ định tuyến.
- 1. Android Im lặng Push
- 2. Im lặng FullAjaxExceptionHandler
- 3. In "Im lặng" trong Ứng dụng web
- 4. python pip im lặng install
- 5. Im lặng nhật ký ChromeDriver.exe
- 6. Làm thế nào để nói mili giây im lặng trong C# bằng cách sử dụng SpVoice?
- 7. NSIS - Ứng dụng tự động im lặng
- 8. lỗi im lặng git/cygwin
- 9. Các mẫu để tránh jQuery im lặng không thành công
- 10. Làm cho mô hình Backbone.js thay đổi "một phần" im lặng?
- 11. vim autocmd im lặng thực hiện
- 12. Nhiệm vụ và ngoại lệ im lặng
- 13. Cài đặt im lặng của gói MSI
- 14. tùy chọn im lặng php cURL?
- 15. Im lặng khi thêm kAudioUnitSubType_MultiChannelMixer vào AUGraph
- 16. In im lặng PDF từ trong Java
- 17. Cài đặt im lặng của addon firefox
- 18. Cách đặt chế độ im lặng sau khi lưu mô hình lần đầu tiên
- 19. Cách phát âm thanh bằng AVAudioPlayer khi ở Chế độ im lặng trong iPhone
- 20. Cách nhận url trang trước bằng cách sử dụng jquery
- 21. Cách lấy url trước bằng cách sử dụng PHP
- 22. Cài đặt chế độ im lặng MSIEXEC
- 23. Kỹ thuật chống im lặng JavaScript để cho biết lỗi
- 24. Im lặng Nhà máy Cô gái đăng nhập
- 25. Rails 3.2 cảnh báo ngưng sử dụng nhật ký im lặng
- 26. Làm cách nào để gỡ lỗi các lỗi im lặng trong các ứng dụng Java?
- 27. Tắt tiếng im lặng từ âm thanh được ghi AVAudioRecorder
- 28. Không thể im lặng Nhúng Cảnh báo Interop
- 29. Pexpect - im lặng đầu ra kết nối ssh
- 30. chạy Watin ở chế độ im lặng, sử dụng Team City
thực sự bạn chỉ có thể lưu trữ "băm" cuối cùng thay vì lịch sử lỗ – mateusmaso
Cảm ơn! Chính xác những gì tôi đang tìm kiếm. – Felipe
Tôi không tin rằng điều này sẽ đảm bảo rằng phương pháp storeRoute sẽ luôn được gọi trước một phương thức định tuyến có thể sử dụng nó. Kết quả là, những gì được lưu trữ trong lịch sử sẽ không nhất quán. – DrewB