我已经深入研究了 ember 源并找到了答案。这可能很有用。
组件继承自 View。实际上,它是一个简单的 View,它自己充当控制器。
https://github.com/emberjs/ember.js/blob/v1.5.0/packages/ember-views/lib/views/component.js#L102
Ember.Component = Ember.View.extend(Ember.TargetActionSupport, Ember.ComponentTemplateDeprecation, {
init: function() {
this._super();
set(this, 'context', this);
set(this, 'controller', this);
},
set(this, 'controller', this) 使组件隔离。
因此,要利用组件绑定和隔离的自我控制,但要使其对操作透明,您应该使用具有自我上下文的视图:
App.MyTransparentComponent = Ember.View.extend
init: ->
@_super()
@set('context', @)
事实上,你可以用组件的所有代码制作一个 Mixin,但是有了这个初始化代码,你就会对这个很酷的东西感到满意:)