商店加载数据

时间:2016-08-09 14:15:08

标签: ember.js

我有从商店读取的服务。我创建了一个基本初始化程序来findAll数据来填充商店,然后我启动服务。该服务恰好使用商店,但当服务访问它时,商店中没有数据。如果我在应用程序加载后手动调用服务中的函数,我就能获得该值。我假设这是因为findAll的回调被放在事件队列上,并且我在事件队列移除该存储填充事件之前运行该服务。如果是这种情况,如何在填充商店后告诉Ember启动服务?

第一个初始化程序(我已经这样做了,所以先运行'之前')

export function initialize(application) {
  let store = application.__container__.lookup('service:store');
  store.findAll('my-data');
}

第二个初始化程序

export function initialize(application) {
  let fSociety = application.__container__.lookup('service:service-FSociety');
  fSociety.start();
}

我也尝试使用run循环,但似乎没有用。

export function initialize(application) {
  let fSociety = application.__container__.lookup('service:service-FSociety');
  Ember.run.scheduleOnce('afterRender', this, function() {
    fSociety.start();
  }

}

1 个答案:

答案 0 :(得分:1)

简短的回答是你不能。

即使您使用初始化程序' changebefore属性可以正确指定它们的运行顺序,它们仍然是异步的,并且在开始自己的工作之前它们不会等待先前的初始化程序完成。

我的建议是使用单个实例初始化程序并执行以下操作:

after