2017-01-30 1 views
0

Die Stammsatz, app/Modelle/Account:Wie kann man verschachtelte Datensätze (Master-Detail-Datensätze) mit Hilfe von Ember Data laden?

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') 
}); 

Die Detailaufzeichnung, app/Modelle/E-Mailadresse:

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') 
}); 

Die Dummy JSON String aus dem Server:

{"id": 0, "Benutzername": "ikevin", "Geburtsdatum": "30.01.2017 1:34:38 ​​ PM", "gender": true, "emailaddresses": [{"id": 0 , "emailaddress": "[email protected]", "Verifikationscode": "AAAAAA", "isverified": fa LSE}]}

Der Adapter /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); 
    } 

}); 

Die Route app/route/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}) 
    }); 
    } 
}); 

und die app/templates/Komponenten/Konto-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> 

ich denke, es gibt zwei Probleme hier:

  • Im Chrome Ember-Plugin sind die Daten für den Modelltyp "E-Mail-Adresse" immer 0. Das bedeutet, dass es nicht geladen ist.

  • In der App/templates/components/account-profile.hbs bezieht sich {{account.accountprofile.emailaddess}} nicht auf das richtige Feld. Hinweis: Vorläufig wird erwartet, dass nur 1 E-Mail-Adresse angezeigt wird.

  • Wie löse ich diese Probleme, um verschachtelte Datensätze zu laden und anzuzeigen?

    Danke!

    Antwort

    0

    Ja, beschloß ich, es selbst:

    habe ich es zu Verschachtelte Arrays (wie hier angegeben: http://thejsguy.com/2016/01/29/working-with-nested-data-in-ember-data-models.html)

    So ist die Zeichenfolge vom Server zurückgegeben wird:

    { "id ": 0," username ":" ikevin "," birthdate ":" 30.01.2017 2:01:14 PM "," gender ": true," emailaddresses ": [{" emailaddress ":" aaa @ bbb .com "," Verifikationscode ":" AAAAAA "," isverified ": falsch}]}

    Und in dem .hbs:

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

    es die Adresse E-Mail zeigt!

    Danke!

    +0

    und ich löschte auch das "E-Mailadresse" -Modell, das zuvor generiert wurde. – ikevin8me

    Verwandte Themen