如何处理包装视图或视图控制器中Ember组件“发送”的操作?

时间:2014-06-04 20:32:07

标签: javascript model-view-controller ember.js

我正在学习Ember并遇到一个问题我似乎无法找到解决方案:我有一个包含组件的视图,该组件处理按钮点击。我想"发送"如果可能的话,对包装视图的操作并在那里处理它。这是首选方式。如果不可能,那么在视图控制器中处理它也是可以的。

但我似乎无法在任何地方捕捉到这个动作,甚至在当前路线或路线的控制器中也是如此。我不知道动作发送到哪里,我以为我能够在当前环境的控制器中处理它,但似乎情况并非如此。

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

我在组件中获得了操作,但sendAction似乎没有做太多。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

我还没有看到如何从组件中定位视图的任何解决方案,但是对于controller->路由等,您只需要定义需要从组件发送操作的位置(这在超级有用的时候非常有用)你有一个特定的控制器/路由范围内的组件,你希望它根据每个组件的交互以不同的方式处理,或者如果你想忽略它,这是你正在发生的事情)

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

或更好地说

{{foo-bar blah=view.foo internalAction='externalAction'}}

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

答案 1 :(得分:0)

回答“我还没有看到如何从组件中定位视图的任何解决方案”的补充答案:

这里神奇的词是targetObject

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

这也适用于针对itemController的每个循环,如下所示:

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

取自@jasonmit的回答: How to send an action from a Ember component to a View that wraps it?