Ember - Как я могу вызвать действие маршрута с моего контроллера

Я использую ember-simple-auth вместе с ember-validations для проверки учетных данных пользователя.

чтобы подтвердить, что я «переопределяю» действие входа в систему в контроллере.

Проблема в том, что после проверки я теперь хочу раздуть действие; однако, поскольку validate возвращает обещание, я не могу просто вернуть true.

Я попытался вызвать свой маршрут с помощью this.get('target').send('login'), но, видимо, это не сработало. Я пробовал this.send('login'), но это создает бесконечный цикл, поскольку контроллер рекурсивно вызывает себя.


person Amr Draz    schedule 15.07.2014    source источник


Ответы (1)


Просто используйте другое имя действия в контроллере и вызовите логин там

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);
    }
}
person Amr Draz    schedule 15.07.2014