Javascript x秒或页面更改后再次隐藏警报消息
我是angular的新手,现在当有人从我们的应用程序请求新密码时,我可以显示一条警告消息: 用户模型:Javascript x秒或页面更改后再次隐藏警报消息,javascript,angularjs,Javascript,Angularjs,我是angular的新手,现在当有人从我们的应用程序请求新密码时,我可以显示一条警告消息: 用户模型: .service('userModel', ['$q', '$http', 'authorizedTracker', function($q, $http, authorizedTracker) { this.passwordreset = function(token) { var deferred = $q.defer(); $http({ me
.service('userModel', ['$q', '$http', 'authorizedTracker', function($q, $http, authorizedTracker) {
this.passwordreset = function(token) {
var deferred = $q.defer();
$http({
method: 'GET',
url: '/reset/'+token
})
.then(function(response) {
if (!_(response.data).has('user')) {
deferred.reject('unkown user id');
}
model.resetted = true;
}, function(error) {
deferred.reject(error.data.message);
});
authorizedTracker.addPromise( deferred.promise)
return deferred.promise;
};
因此,如果resetted为true,则会显示消息,请参见以下内容:
html:
成功新密码将发送到您的电子邮件
但是现在我想在x秒后隐藏警报,或者如果用户单击另一个页面。这怎么可能?有解决方案吗?您应该使用$timeout服务(在本机javascript中是window.setTimeout的符号) 在代码中,您应该添加以下代码
...
model.resetted = true;
$timeout(function() {
model.resetted = false;
}, xxx)//replace xx by the amount of milisecond you want
这里有一个例子,希望能对你有所帮助
要在X秒后关闭,请使用
$timeout
服务
model.resetted = true;
$timeout(function() {
model.resetted = false;
}, X); // X in milliseconds
对于angular2+用户:
您应该向显示警报的方法添加超时:
setTimeout(() => this.hideAlert(), X);
其中,hideAlert生成隐藏警报所需的逻辑,X为毫秒数
这背后的想法是开始计算X毫秒,直到调用this.hideAlert
需要使用arrow函数来保持原始上下文(可以像我们习惯的那样使用它-例如指向父类)Ok,代码不正确。但普朗克的例子对我帮助很大!谢谢修正了,对不起。很难在stackoverflow文本框中编码
setTimeout(() => this.hideAlert(), X);