Ember.js 立即异步启动
我们有一个模型,它有许多belongsTo,并且有许多关系设置为async:true。API只传递ID。一旦页面加载,Ember就会请求所有这些ID 这是故意的行为吗?我的印象是,调用时会加载这些数据 我该如何去弄清楚这些电话为什么会发生 我们使用的是余烬1.13.9和余烬数据1.13.11 编辑:事实证明,我们有一些东西扩展了我们的模型,它影响了所有这些异步关系 我的印象是,调用时会加载这些数据 你说的“被叫”是什么意思 更正确的说法是“需要时加载” 考虑以下几点: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
// 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的回答相当透彻,但如果你觉得不够,你将不得不放弃关于你的应用程序的更多细节,例如你如何在模板中使用关系。