如何以编程方式将组件添加到控制器操作

时间:2013-12-04 15:08:46

标签: ember.js

我有一个场景,我有项目列表,每个项目都有一个创建按钮。当我点击创建时,我希望将一个组件附加到列表项。该组件使用模型数据作为参数,并从内部访问存储。要访问组件中的商店,我使用的是targetObject.store

如果我手动将其添加到模板中,该组件效果很好:

{{#each}}
   <div> blah blah  {{my-component data=this.something action="doSomething"}} <button {{action 'add' this}}>Add</button></div>
{{/each}}

我可以使用标志显示/隐藏组件,并在单击“添加”按钮时切换它,但我宁愿动态地执行此操作。

我确实试过这个但是对我不起作用,因为我无法访问商店:

actions: {

    add: function(obj){
        var view = Ember.View.create({
            template: Ember.Handlebars.compile('{{my-component action="addQuestion"}}')
        });
        view.set('data', obj.get('something'));

        Ember.run(function() {
            //prolly can get parent view rather than document.body
            view.appendTo(document.body);
        });

    }
}

感谢。

1 个答案:

答案 0 :(得分:7)

我认为这个例子回答了你的问题:

http://emberjs.jsbin.com/axUNIJE/1/edit