Ember - 如何从我的控制器调用路线的动作

时间:2014-07-15 22:52:06

标签: ember.js ember-simple-auth

我正在使用ember-simple-auth和ember-validations来验证我的用户登录凭据

为了验证我“覆盖”登录路由在控制器中的登录操作。

问题是,经过验证后,我现在想要搞砸了行动;但是,由于validate返回一个承诺,我不能简单地返回true。

我尝试用this.get('target').send('login')调用我的路线,但显然它不起作用。 我尝试this.send('login')但是这会在控制器递归调用自身时创建一个无限循环。

1 个答案:

答案 0 :(得分:0)

只需在控制器中使用不同的操作名称并在那里调用登录

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);
    }
}