2013-01-14 14 views
9

Sto tentando di utilizzare più negozi in Ember perché ho i modelli con spazi dei nomi sul lato API.Posso specificare un negozio su un modello Ember js?

Aka

App.Gl.Account = DS.Model.extend //Needs to route to /gl/accounts 

App.Company = DS.Model.extend //Routes to /companies 

Il mio primo pensiero è stato quello di definire uno spazio dei nomi

App.Gl = Ember.Namespace.create({}); 
//and a store 
App.Gl.Store = DS.Store.extend({adapter:DS.RESTAdapter({namespace:'gl'})}); 
App.Store = DS.Store.extend({adapter:DS.RESTAdapter}) 

problema è il modello è binded automaticamente al App.Store.

Qualsiasi altro suggerimento su come realizzare i modelli con namespace sarebbe utile. Non ho nemmeno bisogno di loro il namespace sul lato client js, a patto che ci sia un modo semplice per specificare lo spazio dei nomi per ogni singolo modello

+0

sto ancora girando quando si tratta di utilizzare correttamente tempora-dati, ma come per [revisione 11] (https://github.com/emberjs/data/blob/master /BREAKING_CHANGES.md#loading-data), penso che dovresti avere più adattatori come opsetti su più negozi. – MilkyWayJoe

risposta

23

Non si dovrebbe mai avere più di un negozio in un'applicazione Ember.

Invece, è possibile registrare gli adattatori per tipi specifici:

App.Store.registerAdapter('App.Post', DS.RESTAdapter.extend({ 
    // implement adapter; in this case 
    url: "/gl" 
})); 

Probabilmente si desidera utilizzare il RESTAdapter come punto di partenza, a meno che non si hanno esigenze specifiche e sono disposti a scendere e sporco con la (ancora in evoluzione) adattatore API.

+0

grazie a Yehuda, non sapevo che esistesse, potrei inviare un pull per aggiungere questo alle guide. Sono andato con il percorso di estendere il RESTAdapter per supportare i modelli namespaced. Ad esempio, App.Gl.Account si indirizza a '/ gl/accounts' – davydotcom

+0

L'alternativa sarebbe stata utilizzare url: "/ gi" nell'adattatore specifico. Aggiornerò la mia risposta per essere più chiara a riguardo. –

+0

In attesa di un aggiornamento della risposta, Yehuda Katz. –

5

Nelle versioni più recenti di ember (sto eseguendo 1.5.0-beta.1 + canary.13995621 e 1.4 sembra che manchi anche il metodo registerAdapter) l'api è cambiata un po ', il metodo registerAdapter è scomparso.

Ora, se si desidera un adpter non predefinito per un modello, è possibile definire un App.<ModelName>Adapter che verrà utilizzato automaticamente per tale modello.

Quindi, se si dispone di un modello Post e si desidera definire lo spazio dei nomi per quel modello, penso che sarebbe:

App.PostAdapter = DS.RESTAdapter.extend({ 
    namespace: 'gl' 
}) 
0

Non c'è più un metodo registerAdapter.

Per Ember 2:

adattatori specifici del modello possono essere create mettendo la vostra classe di adattatori in un app/adattatori/+ modello di nome-+ js di file dell'applicazione.

Fonte: DS.Adapter Class

Problemi correlati