1

すべての Ember コントローラー、ビュー、およびモデルに Logger オブジェクトを挿入しようとしています。

http://emberjs.com/blog/2013/02/15/ember-1-0-rc/の「REGISTER AND INJECT」セクションで例を試してみましたが、うまくいかないようです。

var App = window.App = Em.Application.create({
    ...
    Logger: Em.Object.extend(),
    ...
});

App.register('logger:main', Em.Object.extend());
App.inject('model', 'logger', 'logger:main');
App.inject('view', 'logger', 'logger:main');
App.inject('controller', 'logger', 'logger:main');

私の見解では、ロガーを取得しようとすると、未定義です:

this.get('logger');

私が間違っていることについてのアイデアはありますか?

4

1 に答える 1

1

JSBinの例

loggerビューに注入されていない理由はわかりませんが、回避策はloggerビューのコントローラーから取得することです。

App = Ember.Application.create({});

App.Logger = Ember.Object.extend({
  log: function(message) {
    console.log(message);
  }
});

App.register('logger:main', App.Logger);
App.inject('model', 'logger', 'logger:main');
App.inject('view', 'logger', 'logger:main');
App.inject('controller', 'logger', 'logger:main');

App.TestView = Ember.View.extend({
  didInsertElement: function() {
    this.get("controller.logger").log("log through controller");
  }
});
于 2013-02-26T01:03:50.613 に答える