2016-08-08 62 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