English 中文(简体)
后骨 > 多个路由器和历史。 启动
原标题:Backbone > Multiple Routers and History.start

我喜欢有多个路由器, 用于模块化。 我在不同js 文件中初始化了 < code>$( document. ready () ) 上的路由器。 当我只有一个路由器运转良好, 因为可以拨打 < code> History. start () 之后, 就可以拨打 < code> start () , 但是现在我有多个路由器, 可以从不同的文件中初始化, 我不知道何时可以调用 < code> History.start () 。

例如:

<script src="router1.js" type="text/javascript"></script>
<script src="router2.js" type="text/javascript"></script>

在路由1.js中:

$(document).ready(function(){
  new Core.Routers.Router1()
});

以及路由器2也是一样。

最佳解决方案是添加一个新的 $( document). ready () , 调用 History. start () 到页面结尾处? 我不认为文件已备妥的呼叫被屏蔽, 因此不会引入一个种族条件, 到调用 histry.start () 时所有路由器可能尚未初始化 。

最佳回答

您只需在应用程序中给 < code> backbone. history. start () 调用一次 < /code>, 而调用的唯一标准是至少一个路由器必须已经即时化 。

所以,你可以轻而易举地做到这一点:


$(function(){
  new MyRouter();
  Backbone.history.start();
});


$(function(){
  new AnotherRouter();
});


$(function(){
  new AndMoreRouters();
});

我经常对路由器做类似的事, 我经常在网页装满后很久 就开始启动新的路由器, 用户正在与页面互动。

虽然FWWW,你可能对我在我的Backbone.Marionette插件中的初始化器概念感兴趣, 并记录为此博客文章的一部分:http://lostechies.com/derickbailey/2011/12/16/composite-javascript-applications- with-backbone-and-backbone-marionette/

问题回答

您也可以检查 backbone. hisstory. started ...

    var Router = Backbone.Router.extend({
        routes: {
              :  load 
        },
        initialize: function () {

        },
        load: function () {

        }
    });

    $(function () {
        new Router();
        if (!Backbone.History.started) {
            Backbone.history.start();
        }
    });

最近的一项拉动请求中又增加了这一内容。

一定要查查Derrick S Olionette插件 也非常棒





相关问题
What s the appropriate granularity for Backbone.js Views?

I m adopting Backbone.js to render a small corner of an existing large web app. If this goes well, I can see Backbone.js growing to encompass the whole of the app, lending some much-needed structure ...

Rendering Layouts with Backbone.js

If you were to build a single page web application (SPWA) using Backbone.js and jQuery with--for example--two controllers that each required a unique page layouts, how would you render the layout? ...

Load html without refresh

Im unsure of how to approach this, should I have the html to be loaded hidden or load it from somewhere? I want to load a form in one page, and dynamic content on other pages. The form can be saved ...

Why are my CoffeeScript/backbone.js events not firing?

I m trying to familiarize myself with CoffeeScript and backbone.js, and I must be missing something. This CoffeeScript: MyView = Backbone.View.extend events: { "click" : "testHandler" ...

热门标签