AngularJS指令:如何使用超时隐藏警报?

时间:2013-05-29 21:28:16

标签: javascript angularjs angularjs-directive

我想要什么?

与任何其他应用程序一样,当警报显示时,它们会在一秒左右后隐藏,我试图找到一种方法在一秒钟后隐藏警报,但不知道该怎么做

非常感谢任何帮助

更新

根据@ Derek的回答,我能够实现超时
http://plnkr.co/edit/uqSB1gIz6XEmJfC8zHNb?p=preview

2 个答案:

答案 0 :(得分:29)

通常我会用数组实现通知,将新通知推送到堆栈,然后设置$ timeout,从数组中删除该特定元素。在渲染方面,您只需使用ng-repeater。

但是在你的情况下,如果你想保留你现有的指令,你可以通过添加一个链接函数并设置$ timeout来删除元素来完成这个功能。

app.directive('notification', function($timeout){
  return {
     restrict: 'E',
     replace: true,
     scope: {
         ngModel: '='
     },
     template: '<div class="alert fade" bs-alert="ngModel"></div>',
     link: function(scope, element, attrs){
         $timeout(function(){
             element.remove();
         }, 5000);
     }
  }
});

答案 1 :(得分:4)

我更新了@daydreamer创建的plunker,以显示多个警报并自动隐藏。如果有人想要自定义多个提醒,请查看此Plunker Link

一半的代码与@DerekR相同,我只对其进行了自定义

>>> re.sub(r'(^|\s)buzz(\s|$)', r'\1***\2', s)
'*** bar *** foobuzz ***'