この状況を考えてみましょう。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({});
問題は、親 (Ember.ArrayController と Ember.ObjectController) から拡張するために、AbstractArrayController と AbstractObjectController も必要なことです。
この種の継承をどのように達成できますか?
私は今openとopenClassメソッドを見ています。
私は次のようなことをやってみました:
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 計算プロパティを抽象化するには?