需要帮助了解ember.js ember数据的工作原理吗

需要帮助了解ember.js ember数据的工作原理吗,ember.js,Ember.js,我对ember.js很陌生 我有以下代码,我需要更改这些代码,以便使用多个模型(使用多个JSON/RESTful调用)从服务器检索数据 此(单一型号版本)适用于: 在app/routes/index.js中: import Ember from 'ember'; export default Ember.Route.extend({ model() { return this.get('store').queryRecord('wallet', {balance: true});

我对ember.js很陌生

我有以下代码,我需要更改这些代码,以便使用多个模型(使用多个JSON/RESTful调用)从服务器检索数据

此(单一型号版本)适用于:

在app/routes/index.js中:

import Ember from 'ember';

export default Ember.Route.extend({
  model() {
    return this.get('store').queryRecord('wallet', {balance: true});
  }
});
在wallet-balance.hbs中:

<div>Your Total Score: {{wallet.balance}} </div>
<div>Your Total Score: {{wallet.wallet.balance}} </div>
<div>Your Total Score: {{anythingelse.wallet.balance}} </div>
在wallet-balance.hbs中:

<div>Your Total Score: {{wallet.balance}} </div>
<div>Your Total Score: {{wallet.wallet.balance}} </div>
<div>Your Total Score: {{anythingelse.wallet.balance}} </div>
在wallet-balance.hbs中:

<div>Your Total Score: {{wallet.balance}} </div>
<div>Your Total Score: {{wallet.wallet.balance}} </div>
<div>Your Total Score: {{anythingelse.wallet.balance}} </div>
你的总分:{{anythingelse.wallet.balance}

我想知道为什么。“钱包”的定义从哪里来的?为什么改成“任何东西”都不管用?“钱包”的代码在哪里?

您需要设置您的型号


希望这对您有所帮助。

您需要将您的模型设置为


希望这有帮助。

组件与其周围环境隔离,因此必须传入组件所需的任何数据。所以你需要理解

我假设,在上述三个示例中,您都包含了类似这样的
钱包余额
组件。
{{wallet balance wallet=model}}

如果您想让
{{anythingelse.wallet.balance}}
这一个在第三个示例中起作用,那么您需要包括类似
{wallet balance wallet=model.anythingelse}}的组件

要在模板hbs文件中进行调试,您可以使用
{{{log'model object'model}}
这样将在控制台中打印
模型
对象。

这是屏幕背后的原因

默认情况下,通过
setupController
hook方法在相应控制器的
model
属性中设置从模型挂钩返回的任何内容。 在您的情况下,您没有覆盖
setupController
,因此默认行为适用

返回这个.get('store').queryRecord('wallet',{balance:true})

  • queryRecord将返回
    Promise
    ,并将解析为单个记录
    wallet
    ,并将在控制器的
    model
    属性中进行设置。现在
    模型
    相当于单个
    钱包
    记录对象。您可以在模板`{model.balance}中访问它
返回RSVP.hash({
anythingelse:this.get('store').queryRecord('wallet',{balance:true})
});


queryRecord
将返回
Promise
,并将其解析为单个记录
wallet
,并将其设置在对象内部
{anythingelse:walletRecord}
现在模型相当于
{anythingelse:walletecord}
。您可以在模板中访问它,如
{{model.anythingelse.balance}
组件与其周围环境隔离,因此必须传入组件所需的任何数据。所以你需要理解

我假设,在上述三个示例中,您都包含了类似这样的
钱包余额
组件。
{{wallet balance wallet=model}}

如果您想让
{{anythingelse.wallet.balance}}
这一个在第三个示例中起作用,那么您需要包括类似
{wallet balance wallet=model.anythingelse}}的组件

要在模板hbs文件中进行调试,您可以使用
{{{log'model object'model}}
这样将在控制台中打印
模型
对象。

这是屏幕背后的原因

默认情况下,通过
setupController
hook方法在相应控制器的
model
属性中设置从模型挂钩返回的任何内容。 在您的情况下,您没有覆盖
setupController
,因此默认行为适用

返回这个.get('store').queryRecord('wallet',{balance:true})

  • queryRecord将返回
    Promise
    ,并将解析为单个记录
    wallet
    ,并将在控制器的
    model
    属性中进行设置。现在
    模型
    相当于单个
    钱包
    记录对象。您可以在模板`{model.balance}中访问它
返回RSVP.hash({
anythingelse:this.get('store').queryRecord('wallet',{balance:true})
});

queryRecord
将返回
Promise
,并将其解析为单个记录
wallet
,并将其设置在对象内部
{anythingelse:walletRecord}
现在模型相当于
{anythingelse:walletecord}
。您可以在模板中访问它,如
{{model.anythingelse.balance}

我明白了。所以,“anythingelse”对应于“{wallet.anythingelse.balance}”。谢谢我懂了。所以,“anythingelse”对应于“{wallet.anythingelse.balance}”。谢谢