gpt4 book ai didi

backbone.js - 我应该使用哪一个? Backbone.js Router.navigate 和 window.location.hash

转载 作者:行者123 更新时间:2023-12-04 01:28:05 25 4
gpt4 key购买 nike

我最近通过阅读一本书开始学习 Backbonejs。我对这个问题有点困惑。这是一个路由器:

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();
});

这是应用程序的启动方法:
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
};
});

我的问题是关于 runApplication部分。我读的书的例子就是这样将路由器传入模块,但它使用了 window.location.hash = "XXX" ,并且路由器根本没有被触及。

我认为“导航”方法会使浏览器移动到我指定的页面,但什么也没发生。为什么?

为了最佳实践,实现页面(或 View )之间移动的最佳方法是什么?

感谢您的任何想法。

最佳答案

您还可以使用静态方法来避免路由器依赖(例如使用 requirejs 时)。

Backbone.history.navigate(fragment, options)

这样,您只需要:
// Start history
Backbone.history.start();

// Authenticated user move to home page
if(authenticated)
Backbone.history.navigate('home', true);
// Unauthed user move to login page
else
Backbone.history.navigate('login', true);

关于backbone.js - 我应该使用哪一个? Backbone.js Router.navigate 和 window.location.hash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16075675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com