【发布时间】:2017-09-13 20:48:12
【问题描述】:
我刚刚开始使用 Ember,几年后又开始使用 javascript。有一个基本的问题。
我有一个登录页面 - 带有登录路由和控制器。在调用 GET /applicantsinfo/123
时,我已经设置了一个 ember cli mirage 端点以返回申请人信息数据import Ember from 'ember';
export default Ember.Controller.extend({
applicantsinfoRecord: '',
userName: '',
password: '',
actions: {
submitAuthForm() {
const userName = this.get('userName');
const password = this.get('password');
// call to mirage
this.get('store')
.findRecord('applicantsinfo', userName)
.then((applicantsInfoRecord) => {
this.set('applicantsInfoRecord', applicantsInfoRecord);
console.log('inside then function',applicantsInfoRecord);
this.transitionToRoute('form-edit');
})
.then((error) => {
console.log('then error happened', error);
this.set('submissionMessage', 'then(error): There was an error logging in with userName:', userName);
})
.catch((error) => {
console.log('inside catch', error);
this.set('submissionMessage', 'catch(error): There was an error logging in with userName:', userName);
});
}
}
});
login.hbs 很简单,包含用户名/密码字段和调用控制器 submitAuthForm() 函数的提交按钮
login.hbs
<label>Card Number</label>
{{input type="text" value=userName}}
<label>Password</label>
{{input type="text" value=password}}
<button class="primary-link" type="submit" {{action 'submitAuthForm'}}>
Submit
</button>
我的问题是当 findRecord 调用返回 then() 块中的值时,它给了我一个 ember 类
它应该返回给我一个实际的申请者信息记录。 由 cli mirage 返回的
/app/mirage/config.js
this.get('/applicantsinfos/123', () => {
return { applicantsinfo: { "id": 123, "sessionId": 3, "userName":
'Abc', "salary": '10110', "age": '1100', "password": 'password03' } }
});
基本上我想在控制器属性中设置这个返回的对象申请者信息,然后转换到下一页表单编辑,我将在其中检索这个属性,使用
this.controllerFor('login').get('applicantsinfo')
所以基本上我有两个问题,我是否应该得到该申请者信息记录而不是 ember _Class 变量。
这也是首先调用身份验证的正确方法,如果它成功,我可能会将 sessionId 从返回的申请者信息记录传递到下一页,在路由中(在 model() 函数中),我可以进行另一个后端调用以根据 sessionId 提取其他客户资料。
请注意,我不是在问如何编写身份验证功能。这个问题可以概括为一种情况——第一个屏幕的控制器进行后端调用,从返回的结果中检索 sessionId,然后转换到下一页,该页面的路由基于从上一页的控制器传递的 sessionId。
【问题讨论】:
标签: ember.js ember-data ember-cli-mirage