2012-01-14 2 views
0

backbone.js의 collection.add에 문제가 있습니다.보기에 initialize()가 사용되었습니다. 내 앱에서 섹션을 변경하면 내 조회수가 삭제되지만 해당 섹션에 사용 된 내 컬렉션은 삭제되지 않습니다 (컬렉션은 앱로드시 빈 상태로 초기화 됨).long live backbone.js 중복 추가 이벤트가있는 버그

누군가 내 섹션으로 돌아 오면 동일한 컬렉션을 사용하고 this.collection.add()를 초기화합니다. 그러나 부작용으로 컬렉션에 새로운 뷰를 2 배 더 추가하면 그 동작을 방지 할 수있는 방법이 있습니까? 내가 명확하지 동일한 뷰 번호 것을 볼 수 있기 때문에

그것은 단지 ... 파이어 폭스에서 발생

이벤트 낯선 또한,이 두 번하는 Collection.add, 아무 의미가 없습니다 (심지어는이 같은 변수에서 비롯됩니다.)

+0

코드 샘플을 제공 할 수 있습니까? – Paul

답변

1

뷰를 변경할 때 이벤트 리스너를 수동으로 바인딩 해제해야합니다. 그렇지 않으면 이벤트 리스너가 메모리에서 제거 된 뷰에 대한 참조를 유지하며 결코 가비지 수집되지 않습니다. 장기적으로 앱이 리소스를 먹기 시작하면 막대한 메모리 누출과 전체 시스템 속도 저하가 발생할 수 있습니다.

현재 백본에 해당 솔루션이 내장되어 있지 않으므로 직접 처리해야합니다.

프로 팁 :

당신은 예를 들어보기에서 및 경로 변경을들을 수 있습니다 경로 변경 후

다른 옵션은 모든 참조

을 정리할 수있는에 "들의 OnDestroy"방법을 호출하는 경우 - 대신 보기 제거 - jquery detach 메서드를 사용하여 모든 jquery dom/custom 이벤트를 정리하지 않고 같은보기를 여러 번 다시 사용하지 마십시오