2
我的模型通過Ember默認的RESTAdapter
與服務器協同工作。使用RESTAdapter自定義後請求
我剛剛在我的服務器上創建了一個自定義端點/mail
,如果提供了名稱,有效的電子郵件地址和文本,它會發送電子郵件。
如何讓Ember發送那個自定義的post-request?沒有Ember.ajax可能嗎?
我的模型通過Ember默認的RESTAdapter
與服務器協同工作。使用RESTAdapter自定義後請求
我剛剛在我的服務器上創建了一個自定義端點/mail
,如果提供了名稱,有效的電子郵件地址和文本,它會發送電子郵件。
如何讓Ember發送那個自定義的post-request?沒有Ember.ajax可能嗎?
對我個人而言,我不會使用Ember-Data來處理這種情況;我通常只使用Ember-Data來處理持久模型。如果您嘗試使用Ember-Data進行其他AJAX調用,則會變得一團糟。請記住,Ember-Data的工作是管理你的持久數據和可以這樣做是與AJAX調用。這並不意味着任何需要AJAX調用的東西都應該用Ember-Data來處理。
我有這個相同的問題,我寫了一個實用程序模塊,它具有所有我的非模型AJAX的東西的功能。這使得換出測試非常容易。這裏有一個小例子:
// utils/ajax.js
export function sendHelpEmail(comment) {
return new Promise((resolve, reject) => {
$.ajax({
type: 'POST',
url: '/api/contact_us',
contentType: 'application/json',
data: JSON.stringify({ comment }),
processData: false,
statusCode: {
200:() => Em.run(null, resolve),
500:() => Em.run(null, reject)
}
});
});
}
然後,我可以做這樣的事情在我的控制器:
import { sendHelpEmail} from '../utils/ajax.js';
export default Em.Controller.extend({
actions: {
sendEmail() {
sendHelpEmail(this.get('comment'));
}
}
});
得到任何建議/上'Ember.run'鏈接? Docs相當簡化http://emberjs.com/api/classes/Ember.run.html – hectorh30 2016-02-02 05:51:53
@ hectorh30對於API,請查看[源代碼](https://github.com/ebryn/backburner.js/斑點/主/ LIB/backburner.js#L141)。參數是'(目標,方法,參數...)'。要了解運行循環,請查看[本指南](https://github.com/ebryn/backburner.js/blob/master/lib/backburner.js#L141)。 – GJK 2016-02-02 14:43:43
第二個鏈接也指向代碼。指南將非常有用。非常感謝! – hectorh30 2016-02-02 15:34:42