Я пишу приложение BackboneJS, где каждая из шести вкладок представлена их собственными представлениями. Я должен сохранить экземпляр представления и просто назвать его функцией render()
всякий раз, когда пользователь нажимает вкладку, к которой он уже был? Или создать новый экземпляр и получить доступ к шаблону, который jQuery кэшировал для меня во время первого рендеринга?BackboneJS - примеры кеширования
Если я сделаю последнее, мне все равно нужно убедиться, что другая коллекция не была получена через мой JSON API, поскольку это было сделано во время инициализации некоторых представлений.
В настоящее время я храню все экземпляры представления в контроллере, но мне было интересно, если это было встроено, или есть лучшие альтернативы.
Cheers.
Update: Вот моя loadCachedView
функция, которую я использую в моем контроллере:
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)
.
Мне нужно было изменить this.el.detach() на $ (this.el) .detach() для кода работать. В противном случае у меня было подобное требование, и это лучшее решение, с которым я столкнулся. –
Итак, это значит, что вы делаете то же, что и я, с loadCachedView или аналогичным (сохраняя экземпляр представления и просто называя его функцией show())? –
Я думаю, да. Но он удаляется из дома, а не скрывается. – Julien