1

我需要在我的路由器中插入一个每隔指定时间(例如 5 秒)工作的功能,但问题是每次我回到家时计数器重新启动计数。如果我打开我的应用程序,计数器就会启动,即使我转到另一个页面,它也会正确计数,但是如果我回到家,计数器就会重新启动。我尝试过绑定和取消绑定,但不起作用。

这是我的路由器:

  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);
  },   
4

1 回答 1

0

修改 url ( www.example.com/#fragment ) 中的片段标识符不会导致页面重新加载。另一方面,如果您删除片段标识符,则页面会重新加载。

我假设当您说“每次我回家”时,您的意思是每次修改 url 以使没有片段时,都会出现问题。

如果您添加新路线#home,并访问example.com/#home而不是仅访问example.com/,则问题应该得到解决。

routes: {
    "": "home",
    "home": "home",
    ...
}

编辑example.com/#:您也可以在不更改路由对象的情况下仅用作主路由)

附言

由于 Router.initialize() 应该只被调用一次,所以这段代码应该足以用于初始化:

initialize:function(){
  setInterval( function(){ alert("Hello") }, 5000 );
}
于 2013-08-08T15:29:18.427 回答