2017-10-28 3 views
0

Nun, ich muss mein Modell nach Ajax Anfrage abgeschlossen laden.ember - laden Modell von Ajax ist undefined

Wenn die Ajax-Anfrage abgeschlossen ist, schiebe ich die Daten in den Speicher. Nach dem Push muss ich die Daten zurückgeben und auf der Vorlage rendern. Problem ist, die Variable {{model}} ist leer.

model(params) { 
    const controller = this.controllerFor('users.profile'); 

    return controller.get('session').authorize('authorizer:devise', (headerName, headerValue) => { 
     const url = '/api/users/profile/'+this.get('session.data.authenticated.user.id'); 

     return Ember.$.ajax({ 
      method: 'GET', 
      url: controller.get('backendURL')+url, 
      dataType: 'json', 
      //data: , 
      contentType: 'application/json', 
      beforeSend: function(xhr) { 
       xhr.setRequestHeader(headerName, headerValue); 
      }, 
      success: function(
       this.store.pushPayload('user',data); 
       //at this point I can see the user info in the ember inspector addon. 
       return Ember.RSVP.resolve(data);//return usr; 
      }, 
      error: function(data){ 
       controller.get('flashMessages').danger('ERROR, '+ data); 
       Ember.$("#loading").hide("slow"); 
       controller.set('seeTable',false); 
      } 
     }); 
    }); 
} 

Irgendwelche Vorschläge, was ist auf meinem Weg nicht in Ordnung?

+0

sollte es 'Erfolg sein: Funktion (Daten) {....}'? – kasperite

+0

Ich denke, du solltest Autorisierung nicht mischen und das Modell in einen Modellhaken bekommen. Mein Rat wäre: Verwenden Sie Ember Simple Auth zur Autorisierung! –

Antwort

0

$.ajax nicht versprechen Objekt zurückkehrt, ist es mit Ember model() Funktion kompatibel machen Sie es mit Versprechen Objekt wickeln sollte:

return new Promise((resolve, reject) => { 
    $.ajax({ 
    success() { 
     .... 
     resolve(data); 
    } 
    }) 
}) 

Wie dem auch sei, ich Ihnen nicht empfehlen $.ajax zu verwenden und Lastdaten mit Ember-Modellen.

Verwandte Themen