我正在使用backbone.js,我需要知道触发的路由器事件是在页面加载时还是由用户点击触发。有没有办法在路由器操作中知道这一点?
答案 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
到您的路线功能。您还可以创建一个中间人函数来处理设置变量,然后调用相应的路径。