2016-12-13 2 views
1

zu machen Ich habe angefangen, an EmberJS zu arbeiten, und ich liebe es absolut. Es hat eine Lernkurve, aber ich glaube, es hat grundsätzlich sehr sinnvolle Prinzipien.Richtiger Weg, AJAX GET und POST Anrufe in EmberJS

Meine Fragen ist, wie GET und POST Anrufe in Ember JS zu machen. Ich verstehe, dass es Modelle/Geschäfte gibt, aber Modelle (meiner Meinung nach) wären nur die Attribute einer bestimmten Entität.

Alle Gedanken zu den folgenden Fragen wären großartig.

Wie sollte ich regelmäßig GET und POST Anrufe (wenn ich sie überhaupt tun) machen. Verwenden Sie einfach jQuerys $ .ajax() oder gibt es einen anderen Weg. Ich fand auch einen Service ember-ajax, der das $ .ajax in einen Versprechensstil verlängert hat.

Alle Gedanken würden sehr geschätzt werden.

Lang lebe EmberJS :)

Antwort

4

Erste Option: Sie können ember-data verwenden. Es hat Anpassungen wie serializers oder adapters.

Zweite Option: Sie können Addons wie ember-ajax verwenden.

Unsere Verwendung ist nur mit jQuery ajax(). Wir haben einen Service geschrieben, der einfach jquery.ajax() umschließt und ihn überall in unserem Code verwendet. Wir glauben, dass es uns die Flexibilität gibt, verschiedene Arten von Abfragen zu schreiben. Wir haben keine model von ember-data.

Probe - Pseudo - Code:

export default Ember.Service.extend({ 
    doPostCall(target, data, options=null){ 
     //consider cloning options with Ember.$.extend 
     var requestOptions= options || {}; 
     requestOptions.url=target; 
     requestOptions.type='POST'; 
     requestOptions.data=JSON.stringify(data); 
     doRemoteCall(requestOptions); 
    }, 

    doGetCall(target, data=null, options=null){ 
     //consider cloning options with Ember.$.extend 
     var requestOptions=options || {}; 
     requestOptions.url=target; 
     requestOptions.type='GET'; 
     requestOptions.data=data; 
     doRemoteCall(requestOptions); 
    }, 

    doRemoteCall(requestOptions){ 
     //assign default values in here: 
     // such as contentType, dataType, withCredentials... 

     Ember.$.ajax(requestOptions) 
     .then(function(data) { 
      Ember.run(null, resolve, data); 
     }, function(jqXHR , textStatus, errorThrown) { 
      jqXHR.then = null; 
      Ember.run(null, reject, jqXHR, textStatus, errorThrown); 
     }); 
    } 
    }); 

PS: Übrigens, wenn Sie Ihre Anwendung in Server-Seite (mit Fast Boot) ausführen müssen, können Sie nicht jQuery verwenden. Verwenden Sie also ember-network.

+1

Ich mag es. Haben Sie jemals die Serialisierer und Adapter mit diesem Ansatz vermisst? – IAMZERG

+0

Nein, niemals. Weil ich kein Modell habe. Sehr selten, ich vermisse Modell, aber irgendein 'Ember.Object' ist genug für uns. – ykaragol

3

Wenn Sie CRUD-Operationen über Modelle durchführen, sind Ember-Daten gut. In den meisten Apps machen CRUD-Vorgänge ~ 90% der Anfragen aus.

Es gibt Gelegenheiten, wo eine App Anforderungen stellen muss, die nicht ideal für Glutdaten sind, und das ist, wo ember-ajax das Spiel betritt. Es erlaubt Ihnen, Anfragen zu erledigen, wie Sie es nur mit jQuery machen würden, mit der netten Ergänzung, dass Anfragen über einen Dienst erledigt werden, der einige Erweiterungspunkte hat, um Dinge wie App-weite Header zu ermöglichen, die komplexer sind nur roh jQuery.

Wenn Ihre App in Fastboot läuft, sollten Sie ember-network verwenden, da es sowohl im Browser als auch im Knoten funktioniert, während jquery/ember-ajax das nicht tut.