我有一个侧边栏视图,其中包含这样的项目列表
SideBarView = Backbone.View.extend(
events:
"click item": "dosomething"
render:
//Render item list from a collection
)
现在,我试图在两条不同的路线上显示侧边栏视图,但遇到了一个小问题。在路由 A 上,我希望 dosomething() 方法打印“A”,而在路由 BI 上,我希望 dosomething() 方法打印“B”。所以,我想知道解决这个问题的最佳方法是什么?我想了想,想出了以下两种方法,但似乎都不够优雅。
方法一
制作另一个 SideBarView 并将其命名为 SideBarView2,然后将方法 dosomething 更改为 dosomethingForRouteB。那么我可以将 SideBarView2 用于路由 B。但是,这违反了 DRY 原则;更不用说,假设我想稍后更改 SideBarView 的渲染方法,那么我将不得不在两个不同的地方进行更改。总的来说,我认为这是一个非常糟糕的方法
方法二
在 dosomething() 方法中,我可以有这样的逻辑语句
route = getCurrentRoute()
if(route = "/routeA")
print A
else
print B
比方法 1 更优雅一点,但在你的视图中有一个逻辑语句有点太 hacky。
无论如何,我的问题是我应该使用方法 2 还是有更好的方法来解决这个问题?
谢谢