【发布时间】:2012-05-10 08:20:31
【问题描述】:
我设置了一个看似有效的主干路由器 - 路由被正确触发,视图更新等。但是,当我按下浏览器的“返回”按钮时,根本不会触发路由。此外,在浏览器中输入 URL 也不会触发路由器。我是否缺少将浏览器特定内容绑定到 Backbone (Firefox 11) 的步骤。
设置
var messageRouter = new MessageRouter({view: messageListView});
Backbone.history.start();
触发器
Backbone.history.navigate("#/view/" + $(this).data("filter-type"), {trigger: true});
路由器代码
var MessageRouter = Backbone.Router.extend({
view : null, /* should always be overridden */
initialize : function(options)
{
this.view = options.view;
},
routes : {
"" : "default",
"/view/:filter" : "filter",
"camera" : "camera"
},
default : function() {
},
filter : function(filterString) {
this.view.setFilter(filterString);
this.view.rerender();
},
camera : function(cameraString) {
}
});
【问题讨论】:
-
通常我会在路由中不带“#”的情况下触发。你在触发脚本工作吗?另外,您的过滤器的内容是什么?你的路线都没有工作吗?尝试从“/view/:filter”路由中删除“/”。(总而言之,您的设置看起来不错 - 我猜某处存在语法错误......)
标签: backbone.js