2014-10-21 14 views
6

Quello che sto cercando di fare è descritto in dettaglio qui:Come posso effettuare chiamate API arbitrarie utilizzando Ember.js?

Call a Server-side Method on a Resource in a RESTful Way

ho RESTAdapter di Ember dati lavorare con il mio API, ma ora voglio dare Ember.js un modo per dare il via vari azioni lato server che utilizzano percorsi personalizzati, ad esempio /docs/1/share o /docs/1/activate. Il primo potrebbe modificare il record, ma il secondo no.

Qual è il modo migliore per farlo?

TIA!

risposta

7

Ember ha jQuery cotto in nel controller:.

actions: { 
    activate: function() { 
     var docId= this.get('id'), self= this; 
     Ember.$.ajax({ 
      url: '/docs/%@/activate'.fmt(docId), 
      // your other details... 
     }).then(function(resolve) { 
      self.set('name', resolve.doc.name); 
      // process the result... 
     }); 
    } 
} 
+0

Sembra fantastico! Funziona perfettamente finora. Grazie. – hourback

+0

Quindi, se volessi aggiornare il modello corrente con qualunque oggetto 'resolve' contenga, farei semplicemente un' this.set ('name', resolve.doc.name); 'per ogni campo che voglio sostituire ? – hourback

+1

La variabile 'resolve' conterrà qualsiasi cosa il server risponda in questa chiamata ajax(). Non puoi usare 'this', poiché si riferisce a un oggetto diverso dal controller. Mantenere un riferimento al controller tramite una chiusura. Aggiornerò la risposta per illustrare ... –

2

È anche possibile utilizzare ic-ajax che è un bel wrapper jQuery.ajax, è possibile vedere un esempio qui using ix-ajax.

Problemi correlati