1

我的 Ember 应用程序有一个奇怪的行为。我无法理解它。基本上我使用的是 Ember octane,我想从我routecontroller.

这是我的路线

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

看到这张图片

这太疯狂了

4

1 回答 1

0

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

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

于 2021-10-01T00:43:44.243 回答