1

我已经阅读了许多关于 Backbone 和 Backbone-Marionette 的博客和教程。在一些博客中,作者正在开始历史记录,即Backbone.history.start() 在 App ' initialize' 事件中,一些在 App ' initialize:after' 事件中,一些在 App ' start' 事件中,而另一些在路由器 ' initialize' 事件中。好吧,他们在任何地方都工作得很好。

但是仍然有人可以帮我解释一下,这将是最好的打电话方式Backbone.history.start()

4

2 回答 2

4

最可靠的方法是使用initialize:after,因为它将在所有初始化程序都运行后启动历史记录(顾名思义)。由于路由器通常会在initialize函数中声明,这意味着在启动历史记录时,所有路由器都已准备好并正在侦听路由事件。

如果您只是使用初始化程序,或者start您冒着在关联路由器准备好处理该路由之前启动历史记录(并尝试触发路由)的风险。

在您看到的情况下,它通常可以工作,因为只涉及一个路由器。但该initialize:after方法适用于所有情况。

于 2013-11-13T16:48:31.617 回答
2

没有最好的办法。由于它是一种“开始并忘记它”的方法,并且您不会再次访问它,因此只要它在您的应用程序中启动,您将它放在哪里(如在上述任何方法中)都不会产生影响。这完全是关于风格的。

于 2013-11-13T06:57:50.597 回答