2013-02-15 2 views
0

이것이 내 프로젝트 아키텍처 문제입니다. 첫 번째 백본 프로젝트이고 아마도 잘못된 것이었을 것입니다. 경로 콜백 내 모든 프로젝트에서 두 번째보기를 인스턴스화 할 때보기 이벤트가 두 번 설정됩니다.

나는이 :
myroute: function() { 
    this.currentView = new MyCustomView(); 
}, 

mysecondroute: function() { 
    this.currentView = new MySecondView() 
}, 
//... 

그래서 모든 경로 콜백에 내가 몇 가지보기를 인스턴스화합니다. 이 뷰에는 render 메소드를 호출하는 초기화 메소드가 있습니다. 그것은 같은보기가 인스턴스화 될 때마다 ( events: {}에 선언 된) 모든보기 이벤트가 '바인딩'된다는 점을 제외하면 작동합니다. 그래서 같은 경로를 두 번 방문하면이 경로에 해당하는보기에 대한 이벤트가 두 번 발생합니다 ...

아마 모든 경로 호출에 대해 새보기를 인스턴스화해야합니다.하지만 어떻게해야합니까? 표준이 무엇인가요? 어쩌면 현재 뷰를 어떻게 든 언로드해야 할 것입니다 - 이것을 수행 할 방법이 있습니까?

답변

0

나는 당신이보기 때문에이

close : function() { 
    //your code to clean everything before closing the view 
    this.remove(); 
    this.unbind(); 
} 

뷰가 추가됩니다 이벤트라고 다음 번에 같은

을 닫을 때 모든 이벤트를 바인딩을 해제하는 방법을 추가 할 수 있다고 생각 뷰의 초기화 중에 이벤트가 두 번 호출 된 이유가 여기에 있습니다. initialize 메소드는 이벤트를 .el 요소에 바인드합니다. 당신은 언젠가 언 바인딩을 할 필요가 있습니다.

관련 문제