控制器中的actions
哈希从父类继承操作处理程序。。。我如何在控制器中用其他散列来模仿这种行为?
例如:我在父控制器中有一个名为sockets
的对象,其中包含一些内容。当我用一个名为sockets
的对象创建一个子类时。。。我想混合对象的两个内容,而不是用子类sockets
对象覆盖。。。
我想要这个(与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之后。。。但这会创建一个数组,其中包含两个散列。。。
由Wildneye在中解决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();
},