来自父类的控制器inherit动作处理程序中的actions
哈希...如何在控制器中模仿其他哈希的这种行为?
例如:我在父控制器中有一个名为sockets
的对象,其中包含一些内容。当我创建一个具有名为sockets
的对象的子类时...我希望混合对象的两个内容,而不是用子类sockets
对象覆盖... < / p>
我想要这个(actions
哈希的相同行为):
父类
export default Ember.ObjectController.extend({
sockets: {
hi: function() {};
}
});
儿童班
export default ParentController.extend({
sockets: {
bye: function() {};
}
});
ChildClassController.create().get('sockets.hi'); // Exists
ChildClassController.create().get('sockets.bye'); // Exists
首先我尝试使用mixin,但是mixin中的hash内容被控制器中的hash内容所覆盖。 在我尝试使用concatenatedProperties之后......但这会创建一个内部有两个哈希的数组...
答案 0 :(得分:1)
Wildhoney在https://github.com/Wildhoney/EmberSockets/issues/43中解决。
一种解决方案可能是实现init方法并自己合并两个对象:
concatenatedProperties: ['sockets'],
init: function() {
var that = this,
sockets = that.get('sockets'),
merged = Ember.$.extend.apply( Ember.$, sockets );
that.set('sockets', merged);
that._super();
},