Упрощенная демонстрация: http://jsfiddle.net/indream/KskXx/
(это демо не может имитировать фактической среды с моей проблемой)ember.js - Предотвращение повторного рендеринга при переключении маршрута
Для демонстрации: наведите курсор на фото покажет вам подпись.
Когда вы нажали фотографию, маршрут был изменен на «носитель» с помощью {{linkTo}}
помощник & lightbox открыт.
При щелчке на лайтбокс-панели маршрут был изменен на 'feed' history API
& lightbox закрыть.
Мой вопрос: Шаблон перерисовываются когда переключатель обратно в «корма».
(Вы можете проверить это, наведя на фотографии как заголовок, потерянный после этого.)
Я хочу остановить это, поскольку приложение откладывается при повторном рендеринге, если есть много фотографий.
Использование {{linkTo}}
является причиной проблемы, пожалуйста, обратитесь к моему ответу
Я прочитал servel вопрос, как Сопутствующие Ember.js - currentViewBinding and stop re-rendering on every view transition и Animating views before destruction in Emberjs.
Но методы, предоставляемые кажется, не работает на RC2, я попытался изменить willDestroy
события, оно работает не пересборка но забросили:
Uncaught Error: Cannot perform operations on a Metamorph that is not in the DOM.
Uncaught Error: NotFoundError: DOM Exception 8
, когда я перешел на другой маршрут (т.е. пустого nowContent
для загрузки другого контента). И изменить destroyElement
не работает вообще.
Вот мой код, любые идеи для решения моей проблемы?
App.MainView = Ember.View.extend({
templateName:'main',
willDestroy: function() {
if (App.get('destroyCurrentView')){
this._super();
}
}
})
App.PageController = Ember.Controller.extend({
lightboxClose:function(e){
if(!e||e.target==e.currentTarget){
$('#lightbox').hide();
$('body').removeClass('noscroll');
history.back();
App.set('destroyCurrentView',false);
setTimeout(function(){
App.set('destroyCurrentView',true);
}, 500);
}
});
App.MediaRoute = App.mainRoute.extend({
enter:function(){
App.set('destroyCurrentView',false);
this._super();
}
});
Я не уверен, какой шаблон повторно рендеринга. Можете ли вы уточнить? –
@ChristopherSwasey Шаблон 'main' повторно отображается при переключении на маршрут« feed ». – inDream