2013-03-09 2 views
0

У меня есть область, где я App.modalRegion показать TopicView, а CompositeView, которая показывает список лекции ссылок в sidebar и content области, которая играет лекционное видео при нажатии на ссылке. Все работает нормально, но VideoItemView не закрывается, когда нажимается другая ссылка.Закрытие ItemView без RegionManager марионетки в

Мой вопрос: Когда видеоматериал изменяется на '.link' мыши, есть (один из магических способов тех, марионетки в) предыдущий VideoItemView может быть закрыт без использования субрегиона и расположения внутри App.modalRegion области. Вот код:

App.modalRegion.show(new TopicView({ model: topicModel })); 

TopicView = new Backbone.Marionette.CompositeView.extend({ 

    template: tpls.TopicTpl, 

    ui: { 
    sidebar: "#topic-sidebar", 
    content: "#topic-content" 
    }, 

    initialize: function(){ 
    this.listenTo(this.model, "change", this.render); 
    }, 

    onRender: function(){ 
    this.showContent(); 

    var collection = this.model.get('lectures'), 
     that = this; 

    this.ui.sidebar.on('click','.link',function(e) { 
     e.preventDefault(); 
     var sno = $(this).data("sno"); 

     var vid = new VideoItemView({ 
     model: collection.get(sno), 
     lec_sno: sno 
     }); 

     that.ui.content.html(
     vid.render().el 
    ); 
    }); 
    }, 

    showContent : function() { 

    var list = new LectListCol({ 
     collection: this.model.get('lectures') 
    }); 

    this.ui.sidebar.html(
     list.render().el 
    ); 
    } 

}); 

ответ

0

Я хотел бы добавить свойство к вашему TopicView что бы ссылаться на ваш currentVideoItemView.

Перед отправкой на новый VideoItemView, вы должны проверить, подходит ли currentVideoItemView для примера VideoItemView.

Тогда вы могли бы назвать close метод на currentVideoItemView, делают ваш новый VideoItemView, а затем снова установить currentVideoItemView.