我的代码试图跟踪Backbone js应用程序中的当前片段。
$(function(){
Backbone.history.start({pushState: true});
console.log("fragment " + Backbone.history.fragment);
// Beef is a global that holds my router (created elsewhere)
Beef.router.bind("all", function(route) {
console.log("fragment from event handler " + Backbone.history.fragment);
});
});
此代码按预期打印'fragment xxx',但在我在应用程序中导航时始终打印'来自事件处理程序undefined'的片段。
如果我将Backbone.History复制到本地var首先它可以工作:
$(function(){
Backbone.history.start({pushState: true});
console.log("fragment " + Backbone.history.fragment);
var hist = Backbone.history;
Beef.router.bind("all", function(route) {
console.log("fragment from event handler " + hist.fragment);
});
});
有人可以解释这里发生的事情吗?
答案 0 :(得分:0)
这可能是一个javascript变量捕获问题吗?例如,确实做了类似帮助的事情:
$(function(){
Backbone.history.start({pushState: true});
console.log("fragment " + Backbone.history.fragment);
(function(hist) {
Beef.router.bind("all", function(route) {
console.log("fragment from event handler " + hist.fragment);
});
})(Backbone.history);
});
其他一些javascript变量捕获answers显示了其他方法。