Ember.js 立即异步启动

Ember.js 立即异步启动,ember.js,ember-data,Ember.js,Ember Data,我们有一个模型,它有许多belongsTo,并且有许多关系设置为async:true。API只传递ID。一旦页面加载,Ember就会请求所有这些ID 这是故意的行为吗?我的印象是,调用时会加载这些数据 我该如何去弄清楚这些电话为什么会发生 我们使用的是余烬1.13.9和余烬数据1.13.11 编辑:事实证明,我们有一些东西扩展了我们的模型,它影响了所有这些异步关系 我的印象是,调用时会加载这些数据 你说的“被叫”是什么意思 更正确的说法是“需要时加载” 考虑以下几点: // parent-mod

我们有一个模型,它有许多belongsTo,并且有许多关系设置为async:true。API只传递ID。一旦页面加载,Ember就会请求所有这些ID

这是故意的行为吗?我的印象是,调用时会加载这些数据

我该如何去弄清楚这些电话为什么会发生

我们使用的是余烬1.13.9和余烬数据1.13.11

编辑:事实证明,我们有一些东西扩展了我们的模型,它影响了所有这些异步关系

我的印象是,调用时会加载这些数据

你说的“被叫”是什么意思

更正确的说法是“需要时加载”

考虑以下几点:

// parent-model
children: hasMany('children', { async: true })

// parent-controller
displayChildren: false

// child-model
name: attr()

// template
{{#if displayChildren}}
  {{#each model.children as |child|}}
    {{child.name}}
  {{/each}}
{{/if}}
由于
displayChildren
为false,因此将不执行模板中的循环。因此不需要孩子。因此,它们将不会被检索。当
displayChildren
设置为true时,模板需要这些子项,并将检索它们。如果
displayChildren
的初始值为true,则在渲染时将立即检索子对象

还有另外一种情况,异步关系引用的记录将被加载:当为它们调用
get
时(这是模板试图获取它们时在封面下发生的情况)。此
get
将返回实际值的承诺。因此,如果出于某种原因,您需要或希望从程序逻辑访问子级,您可以编写如下内容:

// parent-controller
someFunc() {
  this.get('model.children') . then(children => /* do something with children */)
}

@torazaburo的回答相当透彻,但如果你觉得不够,你将不得不放弃关于你的应用程序的更多细节,例如你如何在模板中使用关系。