私はそのようなアイテムのリストを備えたサイドバービューを持っています
SideBarView = Backbone.View.extend(
events:
"click item": "dosomething"
render:
//Render item list from a collection
)
現在、2つの異なるルートでサイドバービューを表示しようとしていますが、少し問題が発生しました。ルートAでは、dosomething()メソッドで「A」を出力し、ルートBIでは、dosomething()メソッドで「B」を出力します。それで、私はこの問題への最善のアプローチは何であるか疑問に思いましたか?私はそれについて考え、次の2つのアプローチを思いつきましたが、どちらも十分にエレガントではないようです。
アプローチ1
別のSideBarViewを作成し、それをSideBarView2と呼び、メソッドdosomethingをdosomethingForRouteBに変更します。したがって、ルートBにSideBarView2を使用できます。ただし、これはDRYの原則に違反しています。言うまでもなく、後でSideBarViewのレンダリング方法を変更したい場合は、2つの異なる場所で変更を加える必要があります。全体として、これは非常に悪いアプローチだと思います
アプローチ2
dosomething()メソッド内で、次のようなロジックステートメントを使用できます。
route = getCurrentRoute()
if(route = "/routeA")
print A
else
print B
アプローチ1よりも少しエレガントですが、ビュー内に論理ステートメントを含めるのは少しハッキーすぎます。
とにかく、私の質問は、アプローチ2を使用する必要があるのか、それともこの問題に対するより良いアプローチがあるのかということです。
ありがとう