考虑这种情况。我有一个通用逻辑,我想在 Ember.ArrayController 和 Ember.ObjectController 实例中重用它。
Ember.ArrayController 和 Ember.ObjectController 都是从基本的 Ember.Object 派生的,所以我正在尝试类似的东西:
AbstractController = Ember.Object.extend({
// some methods with common logic
});
AbstractArrayController = AbstractController.extend({});
AbstractObjectController = AbstractController.extend({});
问题是我还需要 AbstractArrayController 和 AbstractObjectController 从它们的父级(Ember.ArrayController 和 Ember.ObjectController)扩展。
我将如何实现这种继承?
我现在正在研究重新打开和重新打开类方法,也许它们可能有用:http ://emberjs.com/api/classes/Ember.Object.html#method_reopen
我试着做类似的事情:
Ember.Object.reopenClass({
foo: function () {
return "foo";
}.property("foo")
});
但这似乎不起作用。
解决问题的另一种方法:
App.HelloController = Ember.ObjectController.extend({
foo: function () {
return "foo";
}.property("foo")
});
App.WorldController = Ember.ObjectController.extend({
foo: function () {
return "foo";
}.property("foo")
});
如何抽象 foo 计算属性?