【问题标题】:Emberjs Model from route returning undefined in controller来自路由的 Emberjs 模型在控制器中返回未定义
【发布时间】:2021-09-28 19:14:43
【问题描述】:

我的 Ember 应用有一个奇怪的行为。我无法理解它。 基本上我使用的是 Ember octane,我想从我的 route 访问我的模型到我的 controller

这是我的路线

import Route from '@ember/routing/route';

export default class ChatIndexRoute extends Route {
  model() {
    return {
      chatMessages: [
        {
          username: '1',
          message: 'Hi',
          read: true,
        },
        {
          username: '1',
          message: 'how are you?',
          read: false,
        },
        {
          username: '1',
          message: 'its been a long time :)',
          read: false,
        },
      ],
    };
  }

  setupController(controller, model) {
    controller.set('model', model.chatMessages);
  }
}

这是我的控制器

import Controller from '@ember/controller';


export default class ChatIndexController extends Controller {
  init() {
    super.init(...arguments);
    console.log('test', this.model);
  }
}

当我console.log(this.model) 我收到了undefined

但是当我简单地做一个console.log(this) 我得到了一个带有模型属性的完整对象,其中填充了chatmessages

See this image

这太疯狂了

【问题讨论】:

    标签: javascript ember.js ember-octane


    【解决方案1】:

    这只是时间上的一点混乱。控制器上的init() 在路由上执行之前 setupController。所以this.modelundefined

    但是当您执行console.log(this) 时,您会记录完整的控制器。控制台的神奇之处在于它是实时的。所以当这个对象稍后(不久之后,只是一点点)更新时,你会在控制台中看到它。因此,您可以在控制台中检查控制器上的model 属性,即使您登录控制器时它不存在。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-25
      • 1970-01-01
      • 2011-11-24
      • 2013-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多