Ember.View - 如何以正确的方式将另一个 Ember.View 附加到 jQuery HTML 元素



Ember.View内可以做这样的事情:

App.ExperimentalView = Ember.View.extend({
  templateName: 'experimental/table',
  click: function (event) {
    var $target = $(event.target).closest('tr'),
        anotherView = Ember.View.create({
          templateName: 'experimental/appendableRow'
        };
    anotherView.appendTo($target);
  }
});

添加一个仅在单击元素时才在Handlebars模板中定义其 HTML 标记的<tr/>

首先我想使用Ember.ContainerView但后来我重读了文档并偶然发现了这句话:

Ember.ContainerView 的 DOM 表示的 HTML 内容将 仅是其子视图的呈现 HTML。

这导致我假设我需要一个代表我的表的Ember.ContainerView和一个子视图来保存真正的<table/>,它再次具有子视图和另一个Ember.ContainerView对象,它将表示我的表体而不实际呈现一个<tbody/>元素,恕我直言,这似乎有点奇怪。

编辑

这种方法的另一个好处可能是,您将能够声明一个不仅提供方法/属性,还提供自己的Handlebars模板的Ember.Mixin。因此,可以,比方说,使用过滤器和所有内容的 HTML 标记创建类似FilterableViewMixin的东西,您只需实现和重置过滤器条目。

我会稍微不同。在模板中experimental/table添加包含在experimental/appendableRow中的代码段,并将其包装在 if 语句中。然后,如果用户单击表行,视图可以将单击委托给控制器,控制器将切换条件,从而显示experimental/appendableRow代码段。

最新更新