sendAction和send有什么区别?

时间:2014-01-27 06:52:28

标签: ember.js

我定义了两个自定义对象,第一个是扩展Ember.TextField,第二个是Ember.Select。当在Ember.TextField中触发相应的操作时,我会进行一些处理,如果满足要求,则使用@sendAction("actionName")将操作传播到基础控制器。

但是,当我尝试使用Ember.Select时,我得到以下错误:

Uncaught TypeError: Object [object Object] has no method 'sendAction' 

并且必须使用@get("controller").send("actionName")。我的导师认为这种不一致会导致意大利面条代码,我同意他的意见。为什么我不能从Ember.Select中调用@sendAction,这是我在Ember中理解的首选方式?

两者之间的主要区别是什么?

1 个答案:

答案 0 :(得分:18)

在组件内部时应使用

sendAction。如果在连接组件时定义了该操作,它允许您突破组件的范围。这有助于保持组件保证隔离,但如果您想要监听它,仍然允许组件发送消息。 https://guides.emberjs.com/v2.4.0/components/triggering-changes-with-actions/

{{my-component someInternalAction=someExternalAction}}

send应该在其他地方使用。

Ember.SelectEmber.TextField都是组件,因此您需要使用sendAction