Почему $timeout не работает при использовании внутри разрешения обещания?

Я пытаюсь показать пользователю сообщение, которое исчезнет через 6 секунд, используя угловой $timeout. К сожалению, я не смог заставить его работать вместе с angular-translate (который я использую для переводов).

Итак, этот код работает (без службы $translate):

this.showMessage = function(type, text) {
    message.isVisible = true;
    message.type = type;
    message.text = text;
    $timeout(this.hideMessage, 6 * 1000);
}

Но когда я выполняю вызов внутри ответа службы $translate, он этого не делает (я уже проверил, что обещание правильно выполнено):

this.showMessage = (type, translationId) {
    $translate(translationId).then(function (text) {
        //This works just fine.
        message.isVisible = true;
        message.type = type;
        message.text = text;
        //But hideMessage never gets called.
        $timeout(this.hideMessage, 6 * 1000);
    });
}

Может кто-нибудь помочь? Спасибо.

0 ответов

Другие вопросы по тегам