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' })
})
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 –
Essayez ceci: Ember.run (this, function() { this.didFindRecord (store, type, json, json [racine] .id); }); –