2017-08-26 5 views
0

Je suis assez nouveau à EmberJS, j'essaie de récupérer une valeur à partir d'une promesse donnée par un adaptateur personnalisé puisque le backend n'est pas compatible avec les APIComment obtenir une valeur à partir d'une promesse dans EmberJS avec adaptateur personnalisé

Voici mon adaptateur personnalisé:

import DS from 'ember-data'; 
import Ember from 'ember'; 

    export default DS.Adapter.extend({ 
     findRecord(store, type, id) { 
     return Ember.$.getJSON("http://localhost:8000/user/by-username/" + id); 

    } 
}); 

J'ai aussi modifié mon sérialiseur:

import DS from 'ember-data'; 

export default DS.JSONSerializer.extend({ 
    primaryKey:'alias', 
}); 

mon contrôleur ressemble à ceci (où je suis coincé):

import Ember from 'ember'; 

export default Ember.Controller.extend({ 
    username:'', 
    actions: { 
    searchUser : function(){ 
     var id = this.get('username'); 
     var promise = this.get('store').findRecord('roles', id); 
     var self = this 
     promise.then(function(value) { 
     self.set('username', value.get('ID')); 
     }, function(reason) { 
     // on rejection 
     }); 


    } 
    } 
}); 

Plus précisément sur cette ligne de commande ci-dessus, je ne peux pas le faire fonctionner:

self.set('username', value.get('ID')); 

Le ajax est exectued avec succès depuis que je peux le voir arriver sur les outils de dev chrome retour JSON suivant les données:

{"ID":"73ebf44f-71bf-4b60-a755-a4bbef208ef1","mjID":34049137,"alias":"coderman","registration_date":"2017-07-07T20:03:11Z"} 

Je ne suis pas en mesure d'obtenir la valeur d'identité pour être définie sur la propriété nom d'utilisateur

Répondre

0

Votre serveur devrait r réponse avec le format de données JSON attendu. référez-vous à ember-data-model-maker pour l'échantillon.

format échantillon,

{ 
"data": { 
"type": "roles", 
"id": "1", 
"attributes": { 
"id": "foo", 
"mj-id": "foo", 
"alias": "foo", 
"registration-date": "foo" }, 
} 
} 

Note: 1.Look au mj-id et registration-date il est coupé. et vous le nom de la propriété de modèle devrait comme mjId et registrationDate. 2. findRecord nous devons mentionner le nom du modèle role pas le roles