2017-01-30 2 views
0

Ich habe den folgenden Code:Ember Senden von Daten zum Server nicht möglich

app/models/account.js:

import DS from 'ember-data'; 

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

und app/components/Konto-profile.js:

import Ember from 'ember'; 

export default Ember.Component.extend({ 
    buttonLabel: 'Send to Server', 
    actions: { 
    buttonClicked(param) { 
     this.sendAction('action', param); 
    } 
    } 
}); 

und app/templates/components/Konto-profile.hbs

<div class="box"> 
    <div class="title">Your Profile</div> 
    <div>Username: {{account.accountprofile.username}}</div> 
    <div>Email Address: {{account.accountprofile.emailaddresses.0.emailaddress}}</div> 
    <div>Birthdate: {{account.accountprofile.birthdate}}</div> 
    <div>Gender: {{account.accountprofile.gender}}</div> 
</div> 
<div> 
    <div> 
    <label>Username</label> 
    <div> 
     {{input type="text" value=account.accountprofile.username }} 
    </div> 
    <label>Username</label> 
    <div> 
     {{input type="text" value=account.accountprofile.emailaddresses.0.emailaddress }} 
    </div> 
    <label>Username</label> 
    <div> 
     {{input type="text" value=account.accountprofile.birthdate }} 
    </div> 
    <label>Username</label> 
    <div> 
     {{input type="text" value=account.accountprofile.gender }} 
    </div> 
    <div> 
     <div> 
     <button type="submit" {{action 'buttonClicked' account}}>{{buttonLabel}}</button> 
     </div> 
    </div> 
    </div> 
</div> 

Es wird kein Datenverkehr von meinem Webbrowser an meinen Server gesendet.

Was fehlt und was ist falsch an meinem Code? Welche anderen Dinge muss ich tun?

+0

Beachten Sie, dass E-Mailadresse von den Eingabeformen fehlt, und dass die Feldnamen sind falsch. Das ist nicht wichtig. Ich versuche nur, Ember Data an den Server (per POST oder PUT) zu senden. – ikevin8me

Antwort

1

Siehe Persisting Records in ember Führer

Records in Ember Data are persisted on a per-instance basis. Call save() on any instance of DS.Model and it will make a network request.

Sie benötigen save Methode aus dem Datensatz nennen account.accountprofile wie diese this.get('account.accountprofile').save()

+0

Ich wechselte zu "this.get ('account.accountprofile'). Save();" und tatsächlich sendet Ember Data eine PUT-Anfrage an den Server. Auf der Serverseite ist jedoch nichts in der Anfrage enthalten. Wie sendet Ember Data die Daten in der Anfrage? – ikevin8me

+0

Ich habe auch sichergestellt, dass ich die Daten durch Änderung der Werte "verschmutze". Auch hier sehe ich die Anfrage auf dem Server, kann aber die Daten nicht finden. – ikevin8me

+1

Ich kenne mich mit Glutendaten kaum aus. In Ihrem Fall wird die PUT-Anfrage aufgerufen und Sie erhalten ein 'account'-Objekt in der Anfrage. Der Adapter ist verantwortlich für das Senden einer Anfrage an den Server. Sehen Sie sich daher die Methode overriden Ihres Adapters an. refer ['updateRecord'] (http://emberjs.com/api/data/classes/DS.JSONAPIAdapter.html#method_updateRecord) – kumkanillam

-1

sendAction sendet nichts an den Server.

Siehe https://guides.emberjs.com/v1.10.0/components/sending-actions-from-components-to-your-application/

So param.save versuchen() Ihr Modell zum Beispiel zu speichern.

+0

Ich ersetzte das mit param.save() und es heißt "Uncaught TypeError: param.save ist keine Funktion". Wo füge ich param.save() ein? – ikevin8me

+0

Ich denke, dass Sie einige Grundlagen in der Ember-Programmierung vermissen. Sie sollten die Guids tun auf https://guides.emberjs.com/v2.11.0/ Wenn params.save keine Funktion ist, dann account/params ist kein Ember-Datenmodell – GerDner

+0

Welche speziell sollte ich lesen, um zu lösen Dies? – ikevin8me

Verwandte Themen