Мне нужна помощь. Мой код находится в системе. Когда пользователь нажимает на login
: Я поставил кнопку Отключить, чтобы избежать этого, пользователь может делать кнопку много раз, когда система работает, ждет ответаMeteor.setTimeout() внутри внутри Meteor.loginWithPassword()
Мой код работает отлично, но я ставлю класс загрузчика, когда пользователь нажмите кнопку входа в систему.
Когда пользователь вводит пароль и воспринимается, система отправляет нас к следующему виду. Это прекрасно работает, но ... Проблема заключается в следующем: Когда пользователь помещает неверный пароль this.loadingActive = true;
, не меняйте его. Кнопка остается со спином, активным навсегда. Я имею в виду что-то случилось, что переменная loadingActive
DonT изменения в true
мой HTML
<button class="btn btn-default btn-lg btn-block"
ng-class="{'disabled': login.loadingActive === false}"
ng-disabled="loginForm.$invalid || login.loadingActive === false"
ng-click="login.login()">
<span ng-hide="login.loadingActive" class="fa fa-refresh animacion-cargando"></span>
<span ng-hide="login.loadingActive">loading...</span>
<span ng-show="login.loadingActive">Login</span>
</button>
Это файл мой JS
login() {
this.loadingActive = false;
this.error = '';
Meteor.loginWithPassword(this.credentials.email.toLowerCase(), this.credentials.password,
this.$bindToContext((err) => {
Meteor.setTimeout(() => {
if (err) {
this.loadingActive = true;
this.error = err;
} else {
this.loadingActive = true;
this.$state.go('app.pageOne');
}
}, 1000);
})
);
}
Почему, когда я поставить Meteor.setTimeout внутри Meteor.loginWithPassword случается так? любые идеи?
спасибо!
Это не является хорошим образцом для скорости ограничивающем. Посмотрите на [DDPRateLimiter] (https://docs.meteor.com/api/methods.html#ddpratelimiter). Кроме того, я думаю, проблема заключается в том, что 'this' внутри' setTimeout' не является тем же самым "этим", что и во внешней области. –