我定义了两个自定义对象,第一个是扩展Ember.TextField,第二个是Ember.Select.当在Ember.TextField中触发相应的操作时,我会进行一些处理,如果满足要求,那么我将操作传播到底层控制器@sendAction("actionName").
但是,当我尝试使用Ember.Select做同样的事情时,我得到以下错误:
Uncaught TypeError: Object [object Object] has no method 'sendAction'
Run Code Online (Sandbox Code Playgroud)
并且必须改为使用@get("controller").send("actionName").我的导师认为这种不一致会导致意大利面条代码,我同意他的意见.为什么我不能打电话@sendAction给Ember.Select,这是我在Ember中理解的首选方式?
两者之间的主要区别是什么?
Kin*_*n2k 18
sendAction应该在组件内部使用.如果在连接组件时定义了该操作,它允许您突破组件的范围.这有助于保持组件保证隔离,但如果您想要监听它,仍然允许组件发送消息.https://guides.emberjs.com/v2.4.0/components/triggering-changes-with-actions/
{{my-component someInternalAction=someExternalAction}}
Run Code Online (Sandbox Code Playgroud)
send 应该在其他地方使用.
Ember.Select并且Ember.TextField都是组件,因此您需要使用sendAction
| 归档时间: |
|
| 查看次数: |
6451 次 |
| 最近记录: |