我的模型通过Ember的默认RESTAdapter
与服务器配合使用。
我刚刚在我的服务器上创建了一个自定义端点/mail
,如果提供了名称,有效的电子邮件地址和文本,则会发送一封电子邮件。
如何让Ember发送自定义的后期请求?是否有可能没有Ember.ajax?
答案 0 :(得分:6)
就我个人而言,我不会使用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'));
}
}
});