Backbone.js - 有没有办法确定是否在页面加载时触发了路由事件

时间:2012-02-21 10:36:56

标签: javascript backbone.js

我正在使用backbone.js,我需要知道触发的路由器事件是在页面加载时还是由用户点击触发。有没有办法在路由器操作中知道这一点?

2 个答案:

答案 0 :(得分:0)

我认为没有办法区分这些事件。 Backbone的History实现监视当前浏览器窗口URL的更改,无法区分URL的更改方式。您很可能需要推出自己的解决方案(例如,检查历史记录中的条目或在用户点击时使用其他处理程序)。

如果要区分显式调用router.route,可以将自定义字符串作为触发事件'route:yourNameHere'的第二个参数传递,请参阅Backbone's documentation

答案 1 :(得分:0)

您还可以在页面加载时设置一个变量,也就是初始化应用程序的位置(比如路由器的初始化方法)

var Workspace = Backbone.Router.extend({
    initialize: function() {
         var this.pageLoad = true;
     ...

并在导航某处时将其设置为false。你可以听Julians回答中描述的路线事件,或者只是添加一行代码:

Workspace.pageLoad = false

到您的路线功能。您还可以创建一个中间人函数来处理设置变量,然后调用相应的路径。