2017-01-30 45 views
0

主记录,应用程序/模型/账号:如何使用Ember Data加载嵌套记录(主 - 明细记录)?

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    username: DS.attr('string'), 
    emailaddress: DS.hasMany('emailaddresses'), 
    birthdate: DS.attr('date'), 
    gender: DS.attr('boolean') 
}); 

的详细记录,应用程序/模型/ EMAILADDRESS:

import DS from 'ember-data'; 

export default DS.Model.extend({ 
    account: DS.belongsTo('account'), 
    emailaddress: DS.attr('string'), 
    verificationcode: DS.attr('string'), 
    isverified: DS.attr('string') 
}); 

来自服务器的虚拟JSON字符串:

{“id”:0,“username”:“ikevin”,“birthdate”:“Jan 30,2017 1:34:38 PM”,“gender”:true,“emailaddresses”:[{“id”:0 “EMAILADDRESS”: “[email protected]”, “verificationcode”: “AAAAAA”, “isverified”:发LSE}]}

适配器/app/adapters/account.js

import ApplicationAdapter from './application'; 

export default ApplicationAdapter.extend({ 

    urlForQueryRecord(query) { 
    if (query.profile) { 
     delete query.profile; 
     return `${this._super(...arguments)}/profile`; 
    } 

    return this._super(...arguments); 
    } 

}); 

路由应用程序/路由/ index.js:

import Ember from 'ember'; 
import RSVP from 'rsvp'; 

export default Ember.Route.extend({ 
    model() { 
    return RSVP.hash({ 
     walletbalance: this.get('store').queryRecord('wallet', {balance: true}), 
     instagramfriendscount: this.get('store').queryRecord('instagram', {friendscount: true}), 
     accountprofile: this.get('store').queryRecord('account', {profile: true}) 
    }); 
    } 
}); 

和应用程序/模板/ components/account-profile.hbs:

<div class="box"> 
    <div class="title">Your Profile</div> 
    <div>Username: {{account.accountprofile.username}}</div> 
    <div>Email Address: {{account.accountprofile.emailaddess}}</div> 
    <div>Birthdate: {{account.accountprofile.birthdate}}</div> 
    <div>Gender: {{account.accountprofile.gender}}</div> 
</div> 

我认为这里有2个问题:

  1. 在Chrome Ember插件中,模型类型“emailaddress”的数据始终为0.所以,这意味着它不会被加载。

  2. 在app/templates/components/account-profile.hbs中,{{account.accountprofile.emailaddess}}未指向正确的字段。注意:目前预计只显示1个电子邮件地址。

如何解决这些问题以加载和显示嵌套记录?

谢谢!

回答

0

是的,我解决我自己:

我把它改为嵌套的数组(按指定位置:http://thejsguy.com/2016/01/29/working-with-nested-data-in-ember-data-models.html

所以从服务器返回的字符串变成:

{“ID “:0,”username“:”ikevin“,”birthdate“:”2017年1月30日2:01:14 PM“,”gender“:true,”emailaddresses“:[{”emailaddress“:”aaa @ bbb .com“,”verificationcode“:”AAAAAA“,”isverified“:false}]}

而在.hbs:

<div>Email Address: {{account.accountprofile.emailaddresses.0.emailaddress}}</div> 

它显示的电子邮件地址!

谢谢!

+0

我也删除了之前生成的“emailaddress”模型。 – ikevin8me