가 나는 두 개의 서로 다른 노선 사이드 바보기를 표시하려고하지만 약간의 문제로 실행, 지금은 너무Backbonejs보기 렌더링 가장 좋은 방법
SideBarView = Backbone.View.extend(
events:
"click item": "dosomething"
render:
//Render item list from a collection
)
같은 항목의 목록이있는 사이드 바 볼 수 있습니다. 경로 A에서 dosomething() 메서드를 사용하여 "A"를 출력하고 B 경로에서 dosomething() 메서드를 사용하여 "B"를 출력합니다. 그래서이 문제에 대한 최선의 접근법이 무엇인지 궁금합니다. 나는 그것에 대해 생각하고 다음과 같은 두 가지 접근법을 생각해 냈지만 둘 다 충분히 우아하지는 않습니다. 1
접근 방식은 다른 SideBarView를 확인하고 그 다음 dosomethingForRouteB에 방법 해봐요을 변경 SideBarView2 호출합니다. 그래서 B 경로에 SideBarView2를 사용할 수 있습니다. 그러나 이것은 DRY 원칙을 위반했습니다. 말할 필요도없이 나중에 SideBarView의 렌더링 방법을 변경하고 싶다면 두 곳에서 변경해야합니다. 전반적으로, 나는 이것이 해봐요() 메소드 내부 아주 나쁜 방법
접근법 2
생각 나는 방법보다 조금 더 우아한 그래서
route = getCurrentRoute()
if(route = "/routeA")
print A
else
print B
같은 논리 문을 가질 수 있습니다 1 그러나 귀하의보기 안에 논리적 인 성명을 가지고 너무 조금 해키입니다.
어쨌든 제 질문은 접근 방식 2를 사용해야합니까, 아니면이 문제에 대한 더 나은 접근 방법입니까?
감사
재미있는, 나는이를 사용할 수 있습니다. 감사! – Infinity
그런데 조건부 논리 집합을 사용하는 것에 관한 해킹은 없습니다. 우리는 인증 된 사용자와 인증되지 않은 사용자의 페이지를 표시하는 방법을 알고있는 조건부를 가지고 있습니다. 그들은 같은 페이지이지만 약간의 차이점이 있습니다. 두 개의 개별 견해를 유지하는 것은 엄청난 잔인 함과 DRY 교장의 위반입니다. – tkone
@QuynhNguyen : 차이가 커지기 시작하면 부분 템플릿을 사용할 수 있습니다 (템플릿 시스템에서 지원하는 것으로 가정). 템플릿이 너무 지저분 해지지 않도록하십시오. –