以编程方式将Component添加到其他Component中会丢失所有属性

时间:2015-03-06 08:23:13

标签: ember.js ember-cli

我正在使用ember-cli(Ember:1.10.0),并且想要创建一个模态容器,它就像一堆模态。每个模态都是一个组件,它们可以与上一个/下一个模式进行交互。

我的代码就像

模态容器

var ModalContainer = Ember.Component.extend({
  handler: {},
  handlerFunction: function () {
    var handler = this.get('handler');
    if (handler.action === 'push') {
      var instance = handler.component.create({
        content: handler.content
      });
      this.get('modal-container').pushObject(instance);
    } else {
      this.get('modal-container').popObject();
    }
  }.observes('handler'),
});

// template
{{view Ember.ContainerView viewName="modal-container"}}

像这样的虚拟模态

var DummyModal = Ember.Component.extend({
    classNames: ['dummy-view-0'],
    content: 'dummy-view-0'
});

// template
<div>{{content}}</div>

如果我在模板中使用{{dummy-modal}},我可以看到其中包含div内容的dummy-view-0。但是,如果我通过ModalContainer.handlerFunction以编程方式插入,我可以获得div元素,但我的handler.content和默认dummy-view-0都不会出现在{{content}}中。

我想念什么?

此外,我不推荐使用Ember.ContainerView的全局查找。对应的字符串是什么?在官方网站上,它只提到'select' ...

=== 3月6日编辑===

我发现DummyModal.create()创建的ModalContainer组件不会自动使用/templates/components/中的模板,而是从{{1}获取content所以基本上它的行为就像一个View。有谁知道如何让它使用默认模板,如通过模板中的帮助器插入它,以及如何指定相应的上下文和控制器?我在最新的ModalContainer源代码

中找到了以下代码的概念
Ember.Component.init

但它不起作用

0 个答案:

没有答案