1

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

有人可以告诉我为什么content不坚持覆盖init电话吗?如果我设置它工作正常contentsetupController但这不是我想做的事情,因为我可以从多个路由使用这个控制器,我必须在所有“子”路由中初始化它。

4

1 回答 1

3

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

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 回答