2

在内部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);
  }
});

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

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

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

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

编辑

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

4

1 回答 1

3

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

于 2013-07-24T10:14:29.510 回答