Ember.js组件操作未触发

时间:2014-04-23 09:47:02

标签: javascript ember.js

我正在尝试制作可重复使用的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!

2 个答案:

答案 0 :(得分:2)

来自component guide

  

注意:组件名称中必须包含短划线。所以博客文章是一个   可接受的名字,但发布不是。这可以防止与当前冲突   或未来的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}}