angularjs: $timeout d'utilisation (à l'intérieur de service)

Je suis en train de faire un peu de déclarant, qui informe sur des situations typiques: besoin de l'autorisation, les modifications enregistrées, etc. Les avis sont affichés pendant 3 secondes et disparaissent, si l'utilisateur ne clique pas sur elle (si l'avis cliqué, il disparaît immédiatement).
La Documentation n'est pas très informatif.
Comment dois-je utiliser $timeout, à l'appel close(); au bout de 3 secondes?
Et comment puis-je mettre une variable (nId) en fonction? J'ai essayé avec fermeture (*function(){return function(){}}*) en défaut setTimeOut(), mais en vain.

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);
}
});
}
}
});
Avez-vous vérifié Toastr bibliothèque JS? Il dispose de plusieurs options et il montre très agréable notifications. Je vient de terminer que dans un service afin de l'utiliser dans AngularJS. (Et non, je ne suis pas impliqué avec l'équipe 🙂 )

OriginalL'auteur philosophocat | 2013-09-09