1

http://jsbin.com/onikid/3/edit

content誰かがオーバーライドされたinit呼び出しから持続しない理由を教えてもらえますか? 設定contentするsetupControllerと問題なく動作しますが、このコントローラーは複数のルートから使用でき、すべての「子」ルートで初期化する必要があるため、これはやりたくありません。

4

1 に答える 1

3

保存されますが、再び ember によってオーバーライドされます。次のコードは、セットアップ中にルートによって実行されます(Ember ソースへのリンク)。あなたのケースでこの関数が呼び出されると、コンテキストは未定義です。したがって、コントローラーのコンテンツ (モデルはエイリアス) は未定義に設定されます。

setup: function(context) {
    this.redirected = false;
    this._checkingRedirect = true;

    this.redirect(context);

    this._checkingRedirect = false;
    if (this.redirected) { return false; }

    var controller = this.controllerFor(this.routeName, context);

    if (controller) {
      this.controller = controller;
      set(controller, 'model', context);
    }

    if (this.setupControllers) {
      Ember.deprecate("Ember.Route.setupControllers is deprecated. Please use Ember.Route.setupController(controller, model) instead.");
      this.setupControllers(controller, context);
    } else {
      this.setupController(controller, context);
    }

    if (this.renderTemplates) {
      Ember.deprecate("Ember.Route.renderTemplates is deprecated. Please use Ember.Route.renderTemplate(controller, model) instead.");
      this.renderTemplates(context);
    } else {
      this.renderTemplate(controller, context);
    }
  },

したがって、コントローラーのコンテンツは常に渡されたコンテキストに設定されるため、要件を満たすことができない場合があります。

于 2013-02-20T18:03:12.463 に答える