在ember js冒泡的事件或动作

时间:2015-02-03 11:41:33

标签: ember.js ember-data handlebars.js ember-components

Js bin片段在这里,冒泡不起作用。 http://emberjs.jsbin.com/sawane/3/edit

ember文档说,

http://emberjs.com/guides/views/handling-events/

  

事件从目标视图连续冒泡到每个父视图,直到根视图。

事件还会通过控制器冒泡,然后路由层次结构。

我甚至不会看到被冒泡的事件。

1 个答案:

答案 0 :(得分:0)

Ember.Component是不同的 - 他们不会自动冒泡行动。

在您的特定情况下,您必须先在follow-action - 组件中重新发送操作,然后再在user-item - 组件中重新发送操作,然后再在user-list中 - 组件,如:

// template
{{user-list action="follow"}}

// component
...
actions: {
  follow: function() {
    this.sendAction() // The default action is 'action'
  }
}
...

这是一个修改过的jsbin,它一直记录下来: http://emberjs.jsbin.com/wobawa/1/edit

另外,使用Ember 2.0会更容易,因为它为组件中的操作引入了一些新概念。查看Ember 2.0 RFC以获取更多详细信息。


您可以采取的措施是避免手动冒泡,使用组件的块语法来保留上下文,然后在其中执行操作:

// my-controller.hbs

// The 'follow' action will be triggered in this context (the controller)

{{#my-component}}
  {{#my-intermediate-component}}
    <button {{action 'follow'}}>Follow!</button>
  {{/my-intermediate-component}}
{{/my-component}}

这是一个显示此内容的jsbin:http://emberjs.jsbin.com/juzuru/1/edit