我需要在路由器中插入一个在每个指定时间(例如 5 秒)工作的功能,但问题是每次我回到家时计数器都会重新启动计数。 如果我打开我的应用程序,计数器就会启动,即使我转到另一个页面,它也会正确计数,但如果我返回主页,计数器就会重新启动。我尝试过绑定(bind)和取消绑定(bind),但不起作用。
这是我的路由器:
var AppRouter = Backbone.Router.extend({
routes: {
"": "home",
"user/:id":"userDetails",
"settings":"settings",
"friends":"friends",
"mailbox":"mailbox",
"landscape":"landscape"
},
initialize:function(){
$(window).bind('onload', setInterval(function(){alert("Hello")},5000));<---------
$(window).unbind('onload'); <---------
},
home: function() {
if (Parse.User.current()){
var user=new Person();
user.savePosition();
new BarraScreamView();
new MenuView();
}
else
new LoginView();
},
userDetails: function (id) {
console.log(id);
console.log(Models.utenti.get(id));
var page=new UserDetailView({model:Models.utenti.get(id)});
this.changePage(page);
},
最佳答案
修改网址中的片段标识符 (www.example.com/#fragment) 不会导致页面重新加载。另一方面,如果您删除片段标识符,页面将重新加载。
我假设当您说“每次我回家时”时,您的意思是每次修改网址以使其不存在片段时,就会出现问题。
如果您添加新路由 #home,并访问 example.com/#home
而不仅仅是 example.com/
,则问题应该得到解决。
routes: {
"": "home",
"home": "home",
...
}
(编辑:您也可以仅使用 example.com/#
作为主路由,而不更改路由对象)
附注
由于 Router.initialize() 应该只被调用一次,因此这段代码应该足以满足 init 的需求:
initialize:function(){
setInterval( function(){ alert("Hello") }, 5000 );
}
关于javascript - 在路由器主干中插入定时器功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18084264/