2016-07-11 16 views
0

Ich bin neu in Ember & Ich versuche, Aktion zu einer Route in meiner App senden,
Aber ich möchte die Aktion von AJAX Antwort senden, weil ich auch die eingefügte ID aus der benötigen
Server Also versuche ich zu tun:Aktion von Ajax Antwort mit Ember senden

$.ajax({ 
    method: "POST", 
    url: "in", 
    data: datajson, 
    success: function (result) { 
     data.id = result.id; 
     self.sendAction('action', data); 
    } 
}); 

self eine globale Variable ist, dass ich es den Wert von this der Komponente zuweisen.

Nun ist es nicht funktioniert, nichts mit dem Router
Aber wenn ich die sendAction
Die Funktion der „Vater“ Route trigerred ist

EDIT1 aus dem Ajax-Erfolg Funktion setzen gesendet:

Die Vorlagen sind:

<script type="text/x-handlebars" data-template-name="in/income"> 
    {{create-in classes=model action="addIn"}} 
</script> 
<script type="text/x-handlebars" data-template-name="in/expend"> 
    {{create-in classes=model action="addIn"}} 
</script> 

Die Code js Komponente:

App.CreateInComponent = Ember.Component.extend({ 
    classNames: ['fixed'], 
    sum:null, 
    cllass: null, 
    d:null, 
    actions: { 
     create: function (classes) { 
      var classe = this.get('cllass'); 
      var sum = this.get('sum'); 
      des = classes.filterBy('id', classe)[0].des; 
      self = this; 
      data = {sum: sum, class: classe, date: this.get('d')}; 
      var dataJSON = JSON.stringify(data); 
      data.des = des; 
      $.ajax({ 
       method: "POST", 
       url: "in", 
       data: dataJSON, 
       success: function (result) { 
        data.id = result.id; 
        this.sendAction('action', data); 
       } 
      }); 

     } 
    } 
}); 

Also was kann ich tun?
(ich benutze Ember 1,10)

EDIT2:

ich an einer Lösung dachte, meine Lösung ist die Aktion an den Router und es machen Ajax-Aufruf an den Server zu senden und dann das Einfügen zu modellieren die Daten
Mein Code in den Router-Handler:

addIn: function (dataJSON) { 
    self = this; 
    $.ajax({ 
     method: "POST", 
     url: "in", 
     data: dataJSON, 
     success: function (result) { 
      data.id = result.id; 
      self.get('model').pushObject(Ember.Object.create(data)); 
     } 
    }); 
} 

Aber ich habe diesen Fehler in der Konsole:

(index):265 Uncaught TypeError: self.get(...) is not a function

Ich versuche zu suchen und ich fand, dass ich .toArray Funktion nach der Methode get, aber seine dosent Arbeit entweder

Was zu tun, hinzufügen muß?

+0

können Sie zeigen Vorlage und zeigen, wie fügen Sie Komponente Vorlage? –

+0

@MirzaMemic Ich bearbeite meine Frage, bitte schauen Sie sich beide Bearbeitungen an, danke. –

+0

Bitte geben Sie auch den JS-Code der Komponente an. Danke –

Antwort

0

Ok, jemand bei der Arbeit half mir, die Lösung ist für das zweite Problem, meine die Lösung, die ich vorgeschlagen
Der Grund, dass ich diesen Fehler bekommen, weil das Modell auf dem Controller sitzen, so kann es nicht sein auf der Strecke ist die Lösung

gefunden wie das zu tun:

self.get('controller.model').pushObject(Ember.Object.create(data));