Я пытаюсь сделать небольшое уведомление, информирующее о типичных ситуациях: требуется авторизация, изменения сохранены и т. Д. Заметки отображаются в течение 3 секунд и исчезают, если пользователь не нажмите на него (если уведомление нажата, оно немедленно исчезнет). Документация не очень информативна. Как использовать $timeout
, чтобы позвонить по телефону close();
через 3 секунды? И как я могу поместить переменную (nId)
в функцию? Я пробовал с закрытием (*function(){return function(){}}*)
по умолчанию setTimeOut()
, но безуспешно.
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);
}
});
}
}
});
Вы уже проверили [Toastr] (https://github.com/CodeSeven/toastr) библиотеки JS? Он имеет несколько вариантов, и он показывает довольно приятные уведомления. Я просто завернул это в службу, чтобы использовать его в AngularJS. (И нет, я не связан с командой :)) – superjos