0

在我的主干应用程序中,我在父视图中创建了一个弹出框并将其添加到 DOM 中,如下所示

afterRender: function() {
    this.$el.append(
      new Popover.Views.Default({ 
        stick:'right', 
        offsetTop: 3, 
        offsetRight: 5, 
        content: "Foo", 
        reference: this.$el
     }).render().$el
   );
},
toggle: function(){  
  app.vent.trigger('popover34:toggle');
}

然而,弹出框被附加到其父视图。父视图是一个链接,这会导致弹出窗口中出现一些 CSS 问题。

我的问题是,这样做是否安全:

afterRender: function() {
    $('body').append(
      new Popover.Views.Default({ 
        stick:'right', 
        offsetTop: 3, 
        offsetRight: 5, 
        content: "Foo", 
        reference: this.$el
     }).render().$el
   );
}

或者有没有办法在父视图旁边设置它?问题是当我切换弹出框时,它将多次添加到 DOM 中。

4

2 回答 2

1

看起来你正在使用 Marionette。使用 Marionette,处理此问题的一种方法是使用区域。从文档:

区域提供了一种一致的方式来管理您的视图并在您的应用程序中显示/关闭它们。他们使用 jQuery 选择器在正确的位置显示您的视图。

您可以将您的区域放在您喜欢的任何地方,并使用事件聚合器触发它。此外,它会自动关闭旧视图,因此您不会遇到僵尸。

于 2013-07-06T20:48:43.880 回答
1

第二个(并希望澄清)艾萨克在这里的回答,你的“父母”视图应该在一个区域,Popover视图应该在另一个区域。

Brian Mann 制作了一组关于 Marionette.js 和良好应用程序设计的优秀视频,其中一个专门展示了您的确切场景

祝你好运,亚伦

于 2013-07-07T16:04:07.047 回答