angularjs: $timeout Gebrauch (innen-Dienst)

Ich versuche, mich ein wenig notifier, informiert über typische Situationen: benötigen Sie eine Berechtigung, änderungen gespeichert usw. Hinweise werden angezeigt für 3 Sekunden und verschwinden, wenn der Nutzer nicht darauf klicken (wenn Benachrichtigung geklickt, verschwindet es sofort).
Die Dokumentation ist nicht sehr informativ.
Wie soll ich $timeout zu nennen close(); nach 3 Sekunden?
Und wie kann ich eine variable (nId) in Funktion? Ich habe versucht, mit Verschluss (*function(){return function(){}}*) im Standard -setTimeOut(), aber erfolglos.

myApp.controller('noticesCtrl',
    function noticesCtrl($scope, $rootScope, noticesData){
        $rootScope.notices = [];
        $scope.closeNotice = function(nId){
            noticesData.close(nId);
        };
    });

myApp.factory('noticesData', function($rootScope, $timeout){
    return{
        add: function(type, text){
            var nId = $rootScope.notices.length + 1;
            $rootScope.notices.push({id: nId, type:type, text:text+nId});
            //call close function with 3sec. delay; how?
        },
        close: function(nId){
            angular.forEach($rootScope.notices, function(notice, key){
                if(notice.id == nId){
                    $rootScope.notices.splice(key,1);
                }
            });
        }
    }
});
  • Haben Sie überprüft, Toastr JS-Bibliothek? Es hat mehrere Optionen, und es zeigt ganz schön, Benachrichtigungen. Ich habe gerade gewickelt, die in einem Dienst, um es zu benutzen in AngularJS. (Und Nein, ich bin nicht beteiligt mit dem team 🙂 )
Schreibe einen Kommentar