2012-10-24 3 views
5

J'essaie de charger un modèle User de données d'ember à partir d'un itinéraire qui peut accepter un nom d'utilisateur ou un identifiant.Utilisation d'un slug à la place d'un ID

J'ai modifié la méthode de recherche RESTAdapter pour passer l'ID de la réponse JSON à didFindRecord, mais rien n'est transmis à mon affichage. Il semble que le Ember essaie toujours d'utiliser le nom d'utilisateur comme identifiant du modèle.

Mon routeur ressemble à ceci:

App.Router = Em.Router.extend({ 
    location: 'history' 
, root: Em.Route.extend({ 
    user: Em.Route.extend({ 
     route: '/users/:slug' 
    , connectOutlets: function(router, context) { 
     router.get('applicationController').connectOutlet('user', context) 
     } 

    , serialize: function(router, context) { 
     return { slug: context.get('username') || context.get('id') } 
     } 

    , deserialize: function(router, params) { 
     return App.User.find(params.slug) 
     } 
    }) 
    }) 
}) 

Et ma méthode de recherche ressemble à ceci:

var CustomAdapter = DS.RESTAdapter.extend({ 
    find: function(store, type, id) { 
    var root = this.rootForType(type) 

    this.ajax(this.buildURL(root, id), 'GET', { 
     success: function(json) { 
     this.didFindRecord(store, type, json, json[root].id) 
     } 
    }) 
    } 
}) 

App.store = DS.Store.create({ 
    revision: 6 
, adapter: CustomAdapter.create({ namespace: 'api' }) 
}) 
+0

est cette demande ajax effectivement tiré ? (récupérez-vous des données?) il peut s'agir d'un problème de propagation des modifications –

+0

Essayez ceci: Ember.run (this, function() { this.didFindRecord (store, type, json, json [racine] .id); }); –

Répondre

Questions connexes