Уничтожить вид и перезагрузить тот же вид

Я столкнулся с проблемой, когда мне нужно полностью уничтожить и удалить компонент в моем представлении, потому что сторонние элементы в компоненте нуждаются в полном обновлении страницы для правильной работы. Компонент будет обновляться только тогда, когда родительское представление изменится на совершенно другое представление или если страница обновится. Можно ли полностью удалить компонент ember из родительского представления, а затем повторно отобразить его с недавно обновленной информацией о модели из родительского представления?

App.VideoPlayerComponent = Em.Component.extend({
      initPlayer: function(){
            //player stuff here 
            //updates video url yet previous video DOM garbage remains
      }.observes('url'),

      didInsertElement: function(){
            this.initPlayer();
      }
});

Используемый мной видеоплеер - thePlatform js PDK, который, похоже, предназначен только для статических сайтов>:

1 ответ

Ты можешь использовать this.rerender();

Это перерисовает текущий вид / компонент. Также обратите внимание, что willDestroy() будет называться тоже.

Узнайте больше об этом здесь

Обновление 1

Вы должны использовать что-то вроде этого, чтобы найти элемент, к которому вы хотите прикрепить плагин

this.$().find("#my-video-element");

Вы также должны определить код для уничтожения элемента видеоплеера в willDestroy крюк. Это обеспечит удаление видеоплеера при повторном рендеринге.

App.VideoPlayerComponent = Em.Component.extend({
      initPlayer: function(){
            //player stuff here 
            //updates video url yet previous video DOM garbage remains
      }.observes('url'),

      didInsertElement: function(){
            this.initPlayer();
      },

      willDestroyElement : function(){
           //here you need code that video plugin provide to destroy the video attached
           this.$().find("#my-video-element").destory("video")  
      }

});
Другие вопросы по тегам