从容器元素中获取视图

时间:2015-06-24 18:34:31

标签: backbone.js marionette backbone-views

我正在处理一些计划不周,写得不好的代码,而且我没有时间重写。我需要能够访问在同一页面上呈现的视图,但是与我需要访问它的视图分开。

鉴于包含外部视图的元素,我该如何访问它?是否有更好的方法使视图可用(不重写它们连接在一起的方式)?

1 个答案:

答案 0 :(得分:2)

我想你正在使用牵线木偶。你的问题特别是一个设计问题,而不是一个简单的代码行来做另一个讨厌的事情。理想情况下,像$("#element")这样的东西不是一个好习惯,因为它遍历整个DOM以找出元素。

相反,我会建议您使用以下方法,这些方法在大多数地方都很有效,因为您的观点都是 view1 view2

  1. 在指定包含这两个视图的区域时创建布局视图。
  2. 现在您要做的就是在上面创建的布局视图中初始化这两个视图。
  3. 当您想要访问从view1到view2的任何内容时,您在view1中执行的操作如下所示:
  4. 从布局的子项目视图:

    this.triggerMethod('show:message', msg);
    

    并且布局有一些代码:

     childEvents: {
      'show:message': function (childView, msg) {
        view2.dosomething();
      }
    }
    

    通过这种方式,您可以保持视图功能彼此分离,并且您的代码仍然保持干净。

    我想你也可以看一下Marionette文档http://marionettejs.com/docs/marionette.layoutview.html