【问题标题】:Ember.js child route's beforeModel fires before parent's route hands its model to its controllerEmber.js 子路由的 beforeModel 在父路由将其模型交给其控制器之前触发
【发布时间】:2015-01-02 18:20:15
【问题描述】:

我有一个应用程序路由,它在其模型挂钩中获取当前用户(并将其设置为模型)。如果应用程序控制器的模型为空(即用户未登录),我还有应该转换到登录页面的子路由。在这些子路由中,我检查 this.controllerFor('application').get('model') 是否为空。现在,如果用户实际登录,我会看到以下行为。首先,应用程序路由模型钩子起作用并返回用户是预期的。然后,子路由将用户报告为空。然后应用程序控制器中的观察者注意到模型更改为实际用户。我的问题是:为什么子路由的 beforeModel 挂钩会在实际父路由模型更改传播到其控制器之前工作。

如果我将检查放在子路由的 setupController 中,一切正常,但如果路由重定向,则会触发其模型钩子事件,这一点都不好。

访问 modelFor('application') 也不能可靠地工作。

谢谢

【问题讨论】:

    标签: ember.js


    【解决方案1】:

    问题是 setupController(在控制器上设置模型)在所有子路由都执行了它们的模型钩子后触发。要强制在我使用的父路由中的控制器上设置模型:

    setupController: function (controller, model) {
      // Skip default behavior, already done manually in the model hook
    },
    
    model: function () {
      // Set controller model as early as possible,
      // so child routes can rely on controllerFor('application')
      this.generateController('application').set('model', yourModelHere);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-02
      • 2012-07-25
      • 1970-01-01
      • 2018-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多