gpt4 book ai didi

backbone.js - Backbone > 多个路由器和 History.start

转载 作者:行者123 更新时间:2023-12-04 03:26:40 26 4
gpt4 key购买 nike

我希望多个路由器位于一个页面上以实现模块化。我在不同的 js 文件中初始化了 $(document).ready() 上的路由器。当我只有一个可以正常工作的路由器时,因为我可以在初始化路由器后立即调用 History.start(),但现在我有多个可以从不同文件初始化的路由器,我不是确定何时调用 History.start()

例如:

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

在 router1.js 中:

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

对于路由器 2 也是如此。

最好的解决方案是在页面末尾添加一个调用 History.start() 的新 $(document).ready() 吗?我不认为 doc ready 调用是阻塞的,所以这不会引入一个竞态条件,即在调用 History.start() 时所有路由器可能尚未初始化。

最佳答案

您只需要在您的应用中调用一次Backbone.history.start(),调用它的唯一条件是必须至少已经实例化了一个路由器。

所以,你可以很容易地做到这一点:


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


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


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

我经常用路由器做类似的事情,我经常在页面加载很久之后启动新的路由器,用户正在与页面交互。

FWIW,您可能对我在我的 Backbone.Marionette 插件中的初始化程序的想法感兴趣,并记录在这篇博文中:http://lostechies.com/derickbailey/2011/12/16/composite-javascript-applications-with-backbone-and-backbone-marionette/

关于backbone.js - Backbone > 多个路由器和 History.start,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10712734/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com