关闭没有Marionette的RegionManager的ItemView

时间:2013-03-09 12:38:38

标签: backbone.js marionette

我有一个区域App.modalRegion,其中我显示TopicView,一个CompositeView,显示sidebarcontent区域的讲座列表,播放讲座视频单击链接时。一切正常,但是当点击另一个链接时VideoItemView没有关闭。

我的问题是:当'.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
    );
  }

});

1 个答案:

答案 0 :(得分:0)

我会在TopicView添加一个可以引用您的currentVideoItemView的属性。

在呈现新的VideoItemView之前,您会检查currentVideoItemViewVideoItemView的实例。

然后,您可以调用close上的currentVideoItemView方法,渲染新的VideoItemView,然后再次设置currentVideoItemView