6 개의 탭 각각이 고유보기로 표시되는 BackboneJS 앱을 작성하고 있습니다. 뷰의 인스턴스를 저장하고 사용자가 이미 방문한 탭을 클릭 할 때마다 render()
이라는 함수를 호출해야합니까? 또는 새 인스턴스를 만들고 jQuery가 처음 렌더링 할 때 캐시 한 템플릿에 액세스 할 수 있습니까?BackboneJS - 캐싱보기 인스턴스
후자를 수행하는 경우 일부보기를 초기화하는 동안 다른 컬렉션이 내 JSON API를 통해 가져 오지 않도록해야합니다.
지금 내 컨트롤러에 모든보기 인스턴스를 저장하지만 이것이 내장되어 있는지 궁금 해서요 또는 더 나은 대안이 있습니다.
건배.
업데이트 : 뷰를 렌더링 할 때
loadCachedView: function (name, view, collection){
if (!this.views[name]){
if (collection){
this.collections[name] = new collection();
}
this.views[name] = new view({collection: this.collections[name]});
} else {
this.views[name].render();
}
},
그래서, 난 그냥 이동 :
this.loadCachedView('settings', SettingsView, SettingsCollcetion)
여기에 내가 내 컨트롤러에서 사용하는 내
loadCachedView
기능입니다.
코드를 this.el.detach()를 $ (this.el) .detach()로 변경해야했습니다. 일하다. 그렇지 않으면 비슷한 요구 사항이 있었고 이것이 내가 만난 최고의 솔루션입니다. –
그렇다면 loadCachedView 또는 이와 유사한 (뷰의 인스턴스를 저장하고 show() 함수를 호출하는 것) 동일한 작업을 수행한다는 의미입니까? –
나는 그렇다고 생각한다. 하지만 숨겨진 DOM에서 제거됩니다. – Julien