2016-07-05 56 views
2

所以我有一个Rails API和一个Ember应用程序。目前,我的Ember有一个login.hbs模板和一个login.js控制器。EmberJS使用ember-ajax发送HTTP Post请求到Rails API服务器

我做了ember install ember-ajaxhttps://github.com/ember-cli/ember-ajax)。

在进入一个电子邮件地址和密码,我上的登录按钮,叫我login.js行动loginClicked()

点击我的登录控制器我有以下几点:

// login.js controller 
import Ember from 'ember'; 

export default Ember.Controller.extend({ 
    email: '', 
    password: '', 

    actions: { 
    loginClicked() { 
     // alert("email: " + this.get('email') + "\npassword: " + this.get('password')); 

     let params = { 
     email: this.get('email'), 
     password: this.get('password') 
     }; 

     post('/authenticate', { 
     params: params 
     }); 
    } 
    } 
}); 

在我login.js路由处理,我已经注入了烬 - ajax服务:

// login.js route handler 
import Ember from 'ember'; 

export default Ember.Route.extend({ 
    ajax: Ember.inject.service() 
}); 

问题是,我的Mac终端控制台输出错误说:

controllers/login.js: line 16, col 7, 'post' is not defined. 

我也尝试将ember-ajax服务注入到控制器中,但它没有区别。

我做错了什么?

回答

4

一切都被描述成灰烬,AJAX的GitHub页面https://github.com/ember-cli/ember-ajax

export default Ember.Controller.extend({ 
    ajax: Ember.inject.service(), 

    actions: { 
    loginClicked() { 
     let params = { 
     email: this.get('email'), 
     password: this.get('password') 
     }; 

     return this.get('ajax').request('/authenticate', { 
     method: 'POST', 
     data: params 
     }); 
    } 
    } 
}); 

基本上,访问控制器(组件,...)在余烬任何财产,你需要得到它使用this.get ( 'PROPERTYNAME')。 这里您需要使用ajax属性的请求方法(注入的服务)。

+0

是的,我刚刚意识到我需要键入'this.get('ajax')。post(...)'而不是'post(...)':D – Zhang