Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript x秒或页面更改后再次隐藏警报消息_Javascript_Angularjs - Fatal编程技术网

Javascript x秒或页面更改后再次隐藏警报消息

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

我是angular的新手,现在当有人从我们的应用程序请求新密码时,我可以显示一条警告消息:

用户模型:

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