0

これは幅広い質問かもしれませんが、私が調べているのは、拡張機能を作成する機能を提供する Ember API の一部はありますか? それに良いアプローチを示す既存のプラグインはありますか?

ありがとう!、

4

2 に答える 2

3

多くのクラスを拡張できるため、Ember.js には機能を拡張するために多くの機能が組み込まれています。これは、独自のコントローラー、ルート、およびモデルを構築する標準的な方法です。と既存のクラス、および既存のインスタンスは両方とも「再度開く」ことができます。[それを行うための良い方法について、より具体的な答えを得るには、何を達成したいのかを具体的に尋ねる方が良いかもしれません。]

また、コントローラーまたはルートがアクセスする必要がある動作を定義する完全に新しいクラスが必要な場合は、インスタンスがグローバル変数になることなく、新しいクラスのインスタンスをそれらに注入できるメカニズムがあります。http://livsey.org/blog/2013/02/10/integrating-pusher-with-ember/のコードに基づいて、次の方法でクラスを定義できます。

Ember.MyNewPlugin = Ember.Object.extend({
  init: function() {
    // Anything you need to do to initialise the object
  },
  myFunc: function(param) {
    // Anything you need to do with with "param"
  }
});

次に、インスタンスをコントローラーとルートに挿入します。

Ember.Application.initializer({
  name: "mynewplugin",
  initialize: function(container, application) {
    // use the same instance everywhere in the app
    container.optionsForType('mynewplugin', { singleton: true });

    // register 'mynewplugin:main' as our MyNewPlugin object
    container.register('mynewplugin', 'main', Ember.MyNewPlugin);

    // inject the MyNewPlugin object into all controllers and routes
    container.typeInjection('controller', 'mynewplugin', 'mynewplugin:main');
    container.typeInjection('route', 'mynewplugin', 'mynewplugin:main');
  }
});

次に、コントローラーとルートで、次の方法でインスタンスにアクセスできます

var myNewPlugin = this.get('mynewplugin');

そして、その関数を次のように呼び出します。

myNewPlugin("Some data");
于 2013-03-16T08:42:10.120 に答える
0

Ember に「拡張機能」を追加するために必要な特別なことはありません。あなたがやりたいと思う可能性が最も高いのは、 new を導入することですControllers and Views。そのためには、Ember のコア クラスをサブクラス化するだけです。これは、再利用可能で多くの価値を提供するビューを提供する、そのような「拡張機能」の例です

于 2013-03-15T14:01:49.750 に答える