考慮這種情況。我有一個共同的邏輯,我想通過Ember.ArrayController和Ember.ObjectController實例重用。EmberJS繼承難題
兩個Ember.ArrayController和Ember.ObjectController是從基本Ember.Object衍生所以我想是這樣的:
AbstractController = Ember.Object.extend({
// some methods with common logic
});
AbstractArrayController = AbstractController.extend({});
AbstractObjectController = AbstractController.extend({});
的問題是我還需要AbstractArrayController和AbstractObjectController從他們的父母擴展(恩伯.ArrayController和Ember.ObjectController)。
我該如何實現這種繼承?
我在看重新開放,並reopenClass方法,現在,也許他們可能是有用的: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的計算性能?
你試過延伸Ember的控制器,並通過一個混合添加你的代碼? – Thomas
@Thomas我不知道mixin。我只是試了一下,它的工作原理;)謝謝。你能把它作爲答案發布嗎? Mixins似乎是這類問題的正確解決方案。 –