在路由器骨干中插入定时器功能

时间:2013-08-06 15:21:57

标签: javascript backbone.js

我需要在我的路由器中插入一个在每个指定时间(例如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);
  },   

1 个答案:

答案 0 :(得分:0)

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

我假设当你每次回家时说时,你的意思是每次修改网址时都没有片段,就会出现问题。

如果您添加新路线#home,并访问example.com/#home而非example.com/,则应解决此问题。

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

编辑:您也可以使用example.com/#作为主路线,而无需更改路线 - 对象)

<强> P.S。

由于Router.initialize()只应调用一次,因此该代码应该足够用于init:

initialize:function(){
  setInterval( function(){ alert("Hello") }, 5000 );
}