在ObjectController的init中设置内容

时间:2013-02-20 16:30:25

标签: ember.js

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

有人可以告诉我为什么content没有通过覆盖init电话持续存在?如果我在content中设置setupController它可以正常工作,但这不是我想要做的事情,因为我可以从多个路径使用此控制器,我将不得不在所有“子”路由中初始化它。

1 个答案:

答案 0 :(得分:3)

它被保存但被ember再次覆盖。设置(Link to Ember Source)期间,路由运行以下代码。在您的情况下调用此函数时,上下文无法使用。因此,控制器的内容(模型是别名)设置为undefined。

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);
    }
  },

因此,您的要求可能无法实现,因为控制器的内容将始终设置为传递的上下文。