2012-03-08 21 views
5

Estoy buscando una estrategia con clase para recuperar la información del usuario actual con emberjs (y datos de color).Estrategia para recuperar el usuario actual

Actualmente, hago lo siguiente:

Mi API responde a /users/me con el usuario actual.
En mi adaptador, cuando el ID del objeto recuperado no es el que estoy esperando, agrego un real_id que es el id (el ID del usuario en la base de datos) y reemplazo el ID devuelto por lo que soy esperando

Así que cuando mi adaptador tiene "yo" como identificador del usuario, pero el servidor devuelve 1, me sale el siguiente JSON:

{"real_id": 1, "id": "me"} 

Esto funciona. Pero no soy un gran admirador, y me gustaría evitar la mayor cantidad posible de cambios en el contenido predeterminado del adaptador.

¿Utiliza alguna estrategia para esto? Qué recomendarías ?

Respuesta

9

Yo usaría un controlador App.currentUserController para esto.

App.CurrentUserController = Ember.ObjectController.extend({ 
    content: null, 

    retrieveCurrentUser: function() { 
     var controller = this; 
     Ember.$.getJSON('/users/me', function(data) { 
      App.store.load(App.User, data); 
      var currentUser = App.store.find(data.id); 
      controller.set('content', currentUser); 
     }); 
    } 
}); 
+0

lo he intentado, pero me da 'TypeError no detectada: No se puede llamar al método 'carga' de undefined' – X2theZ

+0

Xavier, ir a donde quiera que defina su tienda, y añadir App.store = App.Store. create() – Vojto

-5
get = Em.get 
set = Em.set 
App.AccountController = Em.Controller.extend 

     contentBinding: '_content.firstObject' 

     init: -> 
      set @, "_content", App.User.find() 
+2

Esto supone que el primer usuario devuelto es el actual, lo que podría no ser la mejor idea para una API. –

+0

puede limitar esto en el servidor –

+0

¿Puede explicar * por qué * esto ayuda. – ChrisF

Cuestiones relacionadas