2013-05-29 7 views
13

Quello che ho volere?Direttiva AngularJS: come nascondere l'avviso utilizzando il timeout?

Come qualsiasi altra applicazione, quando avvisi appaiono, si nascondono dopo un secondo o giù di lì, sto cercando di trovare un modo per nascondere l'allarme dopo un secondo, ma non è sicuro di come farlo

ogni aiuto è molto apprezzato

UPDATE

Come da @ risposta di Derek, sono in grado di implementare timeout
http://plnkr.co/edit/uqSB1gIz6XEmJfC8zHNb?p=preview

+0

ho scritto notifica semplice plugin utilizzando avvisare ... può si può dare un'occhiata a http://code-like-a-poem.blogspot.in/2013/11/angularjs-tutorial-8-simple.html –

+1

Questo non funziona per me :(fatto esattamente quello che tu ' ho fatto nel plunkr e non ha funzionato – msqar

+0

@msqar Il plunkr sta usando una versione piuttosto vecchia di angolare, sono abbastanza sicuro che i requisiti per la direttiva sono cambiati, principalmente lo scope – prasanthv

risposta

29

Generalmente implementerei le notifiche con un array, che invia nuove notifiche nello stack, quindi imposta un timeout $ che rimuove quell'elemento particolare dall'array. Dal lato del rendering si dovrebbe semplicemente usare un ripetitore ng.

Tuttavia nel tuo caso, se si desidera mantenere la direttiva esistente, è possibile ottenere questa funzionalità semplicemente aggiungendo una funzione di collegamento e impostando un timeout $ per rimuovere l'elemento.

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); 
    } 
    } 
}); 
+0

Ciao Derek, come implementeresti questo come una matrice? solo curioso – daydreamer

+1

Recentemente ho creato un componente angolare per le notifiche che puoi verificare. (potrebbe essere diverso da quello che stai cercando però). [** Github Link! **] (https://github.com/DerekRies/Angular-Notifications). Spiacente, non c'è ancora una demo, ma spero che tu possa vedere un po 'di quello di cui sto parlando. – DerekR

+0

Com'è possibile la stessa cosa quando devo cambiare i miei messaggi? Ho un plunker qui - http://plnkr.co/edit/YioiJXNkaET6T2mexjCq?p=preview – daydreamer

4

Ho aggiornato il plunker creato da @daydreamer per mostrare più avvisi e nasconderlo automaticamente. Se qualcuno vuole misura più avvisi hanno un'occhiata a questo Plunker Link

metà del codice stesso di @DerekR, ho fatto solo la personalizzazione ad esso

var app = angular.module('myApp', ['$strap.directives']); 

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.hide(); 
     }, 3000); 
    } 
    } 
}); 

app.controller('AlertController', function($scope){ 
    $scope.message = { 
     "type": "info", 
     "title": "Success!", 
     "content": "alert directive is working pretty well with 3 sec timeout" 
    }; 

    $scope.alerts = []; 
    $scope.addAlert = function(index) { 
     $scope.alerts.push(
      { 
      "type": "info", 
      "title": "Success!" + index, 
      "content": "alert " + index + " directive is working pretty well with 3 sec timeout" 
      } 
    ) 
    } 
}); 
Problemi correlati