如何处理动作“发送”;通过Ember组件包装视图或视图的控制器

How to handle action "sent" by Ember component in wrapping view or view's controller?

本文关键字:视图 Ember 通过 组件 包装 控制器 发送 何处理 处理      更新时间:2023-09-26

我正在学习Ember,遇到了一个问题,我似乎找不到解决方案:我得到了一个包含组件的视图,该组件处理按钮单击。我想把那个动作"发送"到包装视图,如果可能的话,在那里处理它。这是最好的方式。如果不可能,那么在视图的控制器中处理它也是可以的。

但是我似乎在任何地方都捕捉不到那个动作,甚至在当前路由或路由的控制器中也没有。我不知道动作被发送到哪里,我想我可以在当前上下文的控制器中处理它,但似乎情况并非如此。

这是一个小提琴,说明我的问题:http://emberjs.jsbin.com/juzif/1/edit

我得到了组件内部的动作,但是sendAction似乎没有做太多。

我做错了什么?

我还没有看到任何解决方案如何目标组件的视图,但控制器->路线等您只需要定义的行动需要被发送到组件(这是超级有帮助当你有组件在一个特定的控制器/路线范围和你想要处理不同的基于每个组件的交互,或者如果你想忽略它,这是目前你发生了什么)

{{foo-bar blah=view.foo dataUpdated='dataUpdated'}}

或者说是

{{foo-bar blah=view.foo internalAction='externalAction'}}
http://emberjs.jsbin.com/misiyaki/1/edit

对"我仍然没有看到任何如何从组件中定位视图的解决方案"的附加回答:

这里的神奇词是targetObject:

{{foo-bar action='actionName' targetObject=view}}

这也适用于针对itemController的每个循环,像这样:

{{#echo posts itemController="post" as |p|}} 
   {{foo-bar action='actionName' targetObject=p }} 
{{/each}}

摘自@jasonmit的回答:如何从Ember组件发送一个动作到包装它的View ?