我正在使用 ember-simple-auth 和ember-validations来验证我的用户登录凭据
为了验证我在控制器中“覆盖”了登录路由的登录操作。
问题是在验证后我现在想冒泡;但是,由于 validate 返回一个承诺,我不能简单地返回 true。
我试着用我的路线打电话,this.get('target').send('login')
但显然它不起作用。我试过this.send('login')
了,但这会创建一个无限循环,因为控制器会递归地调用自己。
我正在使用 ember-simple-auth 和ember-validations来验证我的用户登录凭据
为了验证我在控制器中“覆盖”了登录路由的登录操作。
问题是在验证后我现在想冒泡;但是,由于 validate 返回一个承诺,我不能简单地返回 true。
我试着用我的路线打电话,this.get('target').send('login')
但显然它不起作用。我试过this.send('login')
了,但这会创建一个无限循环,因为控制器会递归地调用自己。
只需在控制器中使用不同的操作名称并在那里调用登录
actions: {
validate: function() {
var that = this;
return this.validate().then(function() {
that.send('login');
}, function() {
// report errors in an array
var errors = that.get('errors');
var fullErrors = [];
Object.keys(errors).forEach(function(val) {
if(errors[val] instanceof Array)
errors[val].forEach(function(msg) {
fullErrors.push([val, msg].join(" "));
});
});
that.set('fullErrors',fullErrors);
});
},
loginFailed: function(xhr) {
this.set('errorMessage', xhr.responseText);
}
}