Tôi bắt đầu học Backbonejs gần đây, bằng cách đọc một cuốn sách. và tôi cảm thấy một chút nhầm lẫn chút về issue.Here đây là một Router:Tôi nên sử dụng cái nào? Backbone.js Router.navigate và window.location.hash
define(['views/index', 'views/login'], function(indexView, loginView) {
var SelinkRouter = Backbone.Router.extend({
currentView: null,
routes: {
'home': 'home',
'login': 'login'
},
changeView: function(view) {
if(null != this.currentView)
this.currentView.undelegateEvents();
this.currentView = view;
this.currentView.render();
},
home: function() {
this.changeView(indexView);
},
login: function() {
this.changeView(loginView);
}
});
return new SelinkRouter();
});
và đây là phương pháp khởi động của một ứng dụng:
define(['router'], function(router) {
var initialize = function() {
// Require home page from server
$.ajax({
url: '/home', // page url
type: 'GET', // method is get
dataType: 'json', // use json format
success: function() { // success handler
runApplicaton(true);
},
error: function() { // error handler
runApplicaton(false);
}
});
};
var runApplicaton = function(authenticated) {
// Authenticated user move to home page
if(authenticated) window.location.hash='home';
//router.navigate('home', true); -> not work
// Unauthed user move to login page
else window.location.hash='login';
//router.navigate('login', true); -> not work
// Start history
Backbone.history.start();
}
return {
initialize: initialize
};
});
Câu hỏi của tôi là về phần runApplication
. Ví dụ về cuốn sách mà tôi đọc đã truyền router thành mô-đun giống như thế này, nhưng nó đã sử dụng window.location.hash = "XXX"
và bộ định tuyến không hề bị xúc động.
Tôi nghĩ phương pháp "điều hướng" sẽ làm cho trình duyệt di chuyển đến trang tôi đã chỉ định, nhưng không có gì xảy ra. Tại sao?
Và vì lợi ích thực hành tốt nhất, cách tốt nhất để đạt được chuyển động giữa các trang (hoặc chế độ xem) là gì?
cảm ơn mọi ý tưởng.
cảm ơn, akoskm. như bạn đã nói, tôi đã thử di chuyển Backbone.history.start() ở phía trước router.navigate(), và nó đã hoạt động. vì vậy tôi phải bắt đầu lịch sử trước khi điều hướng đến một nơi nào đó, đúng không? –
@HetfieldJoe Đó là quyền bắt đầu theo dõi các sự kiện hashchange (chuyển hướng), bạn phải bắt đầu 'Backbone.history', xem báo từ tài liệu ở trên. –
to và rõ ràng. cảm ơn, anh bạn. –