我正在尝试制作可重复使用的ember组件。我想为此组件添加一个动作,因此当用户单击某个按钮时会发生某些事情。问题是,没有调用此操作。我是这样做的:
DummyComponent.js
App.DummyComponent = Ember.Component.extend({
actions: {
dummy_action: function() {
console.log('dummy_action fired!');
}
}
});
伪component.hbs
<p>dummy component</p>
<button {{action "dummy_action"}}>Dummy action</button>
当我包含在 application.hbs :
中时,组件正确呈现{{ dummy-component }}
但正如我所说,行动并没有被解雇。
如果我使用相同的方法在控制器中创建一个动作,则会正确调用该动作。
我做错了什么?
Thans!
答案 0 :(得分:2)
注意:组件名称中必须包含短划线。所以博客文章是一个 可接受的名字,但发布不是。这可以防止与当前冲突 或未来的HTML元素名称,并确保Ember选择 组件自动。
有一个例子here。
每当ember找到一个未知的帮助者名称时,它会尝试使用ComponentLookup解析它。在您的情况下,组件模板已成功解析,但它无法在容器中找到您的组件并注册/分配默认的Ember.Component,它不实现您的操作处理程序。
答案 1 :(得分:0)
试试这个:
创建一个视图:
MainAppView = Ember.View.extend({
actions: {
dummy_action: function() {
console.log('dummy_action fired!');
}
}
});
然后在你的模板中:
{{#view MainAppView}}
<p>dummy component</p>
<button {{action dummy_action target="view"}}>Dummy action</button>
{{/view}}