在页面加载时获取路由
Get route on page load
如何在(第一个)页面加载时获取当前路由?
myRouter = new app.Router();
Backbone.history.start();
myRouter.on("route", function(route, params) {
console.log(route);
});
这适用于每条路线,但不适用于第一个路线(或页面刷新)。
它不起作用的原因是您在事件触发后绑定了一个事件。
这将解决问题:
myRouter = new app.Router();
myRouter.once("route", function(route, params) {
console.log(route);
});
Backbone.history.start();
但更好的方法是在您的路由器中使用 listenToOnce
。
app.Router = Backbone.Router.extend({
routes: { /* ... */ },
initialize: function() {
this.listenToOnce(this, 'route', this.onFirstRoute);
},
onFirstRoute: function(route, params) {
console.log(route);
}
});
会触发一次,然后会自行解绑
或者,如果您只想知道哪条路线:
myRouter = new app.Router();
Backbone.history.start();
console.log(Backbone.history.getFragment()); // or .getPath()
如何在(第一个)页面加载时获取当前路由?
myRouter = new app.Router();
Backbone.history.start();
myRouter.on("route", function(route, params) {
console.log(route);
});
这适用于每条路线,但不适用于第一个路线(或页面刷新)。
它不起作用的原因是您在事件触发后绑定了一个事件。
这将解决问题:
myRouter = new app.Router();
myRouter.once("route", function(route, params) {
console.log(route);
});
Backbone.history.start();
但更好的方法是在您的路由器中使用 listenToOnce
。
app.Router = Backbone.Router.extend({
routes: { /* ... */ },
initialize: function() {
this.listenToOnce(this, 'route', this.onFirstRoute);
},
onFirstRoute: function(route, params) {
console.log(route);
}
});
会触发一次,然后会自行解绑
或者,如果您只想知道哪条路线:
myRouter = new app.Router();
Backbone.history.start();
console.log(Backbone.history.getFragment()); // or .getPath()