2016-08-08 33 views
0

我使用的是ember 2.7.0在我的一个ember服务中,我正在返回一个硬编码(尚未调用rest端点)数据,而是希望返回硬编码数据。在控制器中,如果promise是成功的,那么将硬编码的数据推到ember store中,否则返回错误object.I对于烬来说是全新的,所以我不知道如何实现这一点。在Ember中推送数据服务层中的数据并返回承诺

下面是我的服务文件

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" 
    }] 
    }] 
}; 

} 
}); 

在上面的服务类,而不是返回硬编码的JSON我应该与此数据一起返回RSVP承诺。

下面是我的控制器文件

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')); 
}, 
} 
}); 

下面是我的串行文件

customer.js

import ApplicationSerializer from './application'; 

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

3-上述代码需要解决的问题:

1)必须从服务和数据一起返回承诺。

2)如何获取推送的数据(希望我推送的数据正确)。

3)运行上面的代码,而我收到以下异常,

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

这将是巨大的,如果有人指导我解决这些问题。

回答

1

1)问题的第一部分相当简单。在您的服务中,您可以这样做:

import Ember from 'ember'; 

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

2)在您的控制器操作中,您已将数据推入商店。因此,一旦转换到customers.view路线,您可以通过ID检索现在位于商店中的客户。在customers.view航线的机型挂钩,做到这一点:

import Ember from 'ember'; 

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

然后在控制器,你将有机会获得您在路由的型号挂钩检索到的客户。

3)很难解决,因为上面列出的代码(除了注释掉的代码)都不应该向服务器发出请求。此外,你有1个Ajax请求(注释掉)不会提出/customers的请求,它会去/customers/:id。这可能是路线中的其他地方,可能是customers路线,您正在提出请求。

+0

谢谢你的回答。我能够在你的帮助下完成它。清除所有的错误。 – VelNaga