2016-08-08 64 views
0

Ich benutze Ember 2.7.0 In einem meiner Ember-Service bin ich eine fest codierte (noch zu Rest-Endpunkt) Daten zurück, stattdessen möchte ich das Versprechen mit der Hardcoded zurückgeben Daten. Im Controller, wenn das Versprechen Erfolg ist, dann drücken Sie die fest codierten Daten in den Glut-Speicher, andernfalls geben Sie das Fehler-Objekt zurück. Ich bin völlig neu zu ember, also weiß ich nicht, wie ich das erreichen kann.Push-Daten in Ember-Speicher in Service-Layer und Rückgabe Versprechen

Unten ist meine Service-Datei

customer.js

import Ember from 'ember'; 

export default Ember.Service.extend({ 
    getIndividualCustomer(id) { 
// return Ember.$.ajax({ 
// url: `/api/v1/customers/${id}`, 
// type: 'GET' 
// }); 
return { 
    "customerId" : "38427357", 
    "productName":[{ 
    "product":[{ 
    "name":"sample1", 
    "status":"Active" 
    },{ 
    "name":"sample2", 
    "status":"Active" 
    }] 
    }] 
}; 

} 
}); 

In der obigen Service-Klasse anstelle die hartcodierte json der Rückkehr i RSVP Versprechen zusammen mit diesen Daten zurückgeben soll.

Unten ist mein Controller Datei

index.js

import Ember from 'ember'; 

export default Ember.Controller.extend({ 

customer: Ember.inject.service(), 

actions: { 
searchCustomer: function() { 
    this.store.push(this.store.normalize('customer', this.get('customer').getIndividualCustomer(this.get('inputID')))); 
    this.transitionToRoute('customers.view', this.get('inputID')); 
}, 
} 
}); 

Unten ist mein Serializer Datei

customer.js

import ApplicationSerializer from './application'; 

export default ApplicationSerializer.extend({ 
primaryKey: 'customerId' 
}); 

3- Dinge, die in dem obigen Code zu lösen sind:

1) müssen Versprechen vom Dienst zusammen mit Daten zurückgeben.

2) So erhalten Sie die Push-Daten (Ich hoffe, ich schob die Daten richtig).

3) Während obige Code ausgeführt wird i die folgende Ausnahme bin immer,

Error: Ember Data Request GET /api/v1/customers returned a 404 

Es wäre toll, wenn jemand mich zu leiten, diese Probleme zu lösen.

Antwort

1

1) Der erste Teil Ihrer Frage ist ziemlich einfach. In Ihrem Service können Sie dies tun:

import Ember from 'ember'; 

export default Ember.Service.extend({ 
    getIndividualCustomer(id) { 
    return new Ember.RSVP.Promise(function(resolve) { 
     resolve({ ...data...}); 
    }) 
} 

2) In Ihrer Controller-Aktion haben Sie die Daten in den Laden geschoben. Sobald Sie also zur Route customers.view übergegangen sind, können Sie den Kunden, der sich jetzt im Geschäft befindet, über die ID abrufen. In der Modell Haken der customers.view Route, dies zu tun:

import Ember from 'ember'; 

export default Ember.Route.extend({ 
    model(params) { 
    return this.store.find('customer', params.id) 
    } 
}) 

Dann in der Steuerung würden Sie Zugang zum Kunden haben, die Sie in der Route des Modell Haken abgerufen.

3) Ist schwer zu lösen, da keiner der oben angegebenen Codes (außer dem auskommentierten Code) eine Anfrage an den Server stellen sollte. Auch die 1 Ajax-Anfrage, die Sie haben (auskommentiert), würde keine Anfrage an /customers machen, es würde zu /customers/:id gehen. Es ist wahrscheinlich, dass woanders in einer Route, wahrscheinlich die customers Route, Sie die Anfrage stellen.

+0

Vielen Dank für Ihre Antwort.Ich bin in der Lage, es mit Ihrer Hilfe zu tun.Klare alle Bugs. – VelNaga