使用RESTAdapter自定义发布请求

Hed*_*dge 2 ember.js ember-data ember-cli

我的模型通过Ember默认使用服务器RESTAdapter.

我刚刚/mail在我的服务器上创建了一个自定义端点,如果提供了名称,有效的电子邮件地址和文本,它会发送一封电子邮件.

如何让Ember发送自定义的后期请求?是否可以没有Ember.ajax?

GJK*_*GJK 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)
            }
        });
    });
}
Run Code Online (Sandbox Code Playgroud)

然后,我可以在我的控制器中做这样的事情:

import { sendHelpEmail} from '../utils/ajax.js';

export default Em.Controller.extend({
    actions: {
        sendEmail() {
            sendHelpEmail(this.get('comment'));
        }
    }
});
Run Code Online (Sandbox Code Playgroud)