4

以下に、私が「考える」ものの例を示しましたが、うまくいきません。私の期待は、コントローラーが別のコントローラーから継承する場合、親クラスで提供された動作にアクセスできるはずです。「ニーズ」でも同じ動作が実現できることは知っていますが、動作を継承できればもっとすっきりすると思います。

https://gist.github.com/4589210

4

2 に答える 2

5

代わりに を使用することもできますmixin。それは何ですか?一種の多重継承です。

App.Important = Ember.Mixin.create({
  sharedBehavior: function() {
    return "A winner is you!!!";
  }.property()
});

App.OtherImportant = Ember.Mixin.create({
  otherSharedBehavior: function() {
    return "A winner is not you!!!";
  }.property()
});

App.AnotherController = Ember.controller.extend(App.Important, App.OtherImportant, {
  importantStuff: function() {
    var ohBeehave = this.get("sharedBehavior");
    if(ohBeehave) { 
      return ohBeehave;
    } else {
      return "FML";
    }
  }.property("sharedBehavior")
});

http://emberjs.com/api/classes/Ember.Mixin.htmlを参照してください。

于 2014-11-10T17:22:29.700 に答える
2

コントローラーが他のコントローラーからプロパティを継承できる必要があることは正しいです。あなたの要点に基づいた実際の例を次に示します。

http://jsbin.com/uzeyum/1/edit

App = Ember.Application.create();

App.ApplicationController = Ember.Controller.extend({
  sharedBehavior: function() {
    return "A winner is you!!!";
  }.property()
});


App.AnotherController = App.ApplicationController.extend({
  importantStuff: function() {
    var ohBeehave = this.get("sharedBehavior");
    if(ohBeehave) { 
      return ohBeehave;
    } else {
      return "FML";
    }
  }.property("sharedBehavior")
});

とはいえ、経験上、継承が必要になることはめったにないと言えます。これには多くの理由があります。継承よりも構成を優先しますか? を参照してください。詳細については。

needs継承ではなくプロパティを介して依存関係の配列を宣言することにより、時間の経過とともに、アプリケーションの脆弱性が軽減され、テスト/変更が容易になることがわかります。

于 2013-01-21T21:45:26.623 に答える