我相信,在数据驱动的编程范例中,路由器和视图应该彼此隔离,并且它们只能通过模型​​更改(它们都订阅)来相互通信。

但是,各种在线教程都以不同的方式执行此操作。我已经看到了在路由器的initialize方法内部实例化视图的代码,因此为路由器提供了一种访问视图的方法。我还看到了将路由器传递给视图的代码,以便该视图可以侦听路由器的路由事件的更改。

我认为这两种方法都不对,因为它破坏了关注点的分离。当我刚接触Backbone时,能否再有经验和知识渊博的人来确认?

最佳答案

我看不到使用路由器实例化视图的任何问题,实际上是我使用的工作方式。路由器检测到一个新的URL并分离所有未使用的View并实例化所请求的URL。

将Router引用传递给View可能很麻烦,更不用说要付出太多努力才能使引用在View和SubView之间移动。

但另一方面,视图必须能够向路由器发送信号以更改导航,因此我也采用了一种简单的方法,使路由器对我的应用程序中的所有元素全局可见,并且我可以从任何视图调用App.router.navigate()不必记住要显式地传递引用。可以捍卫这一决定,因为在任何Backbone应用程序中仅允许一个路由器实例。

关于javascript - View 与路由器之间的 Backbone 关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12079348/

10-12 12:28
查看更多