我正在使用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
但它不起作用