我正在尝试制作一个通知,告知典型情况:需要授权,保存更改等。通知显示3秒钟后消失,如果用户没有点击它(如果点击通知,它会消失立刻)。
文档资料不多。
我应该如何使用$timeout
,在3秒后拨打close();
?
我如何将变量 (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);
}
});
}
}
});
答案 0 :(得分:4)
myApp.factory('noticesData', function($rootScope, $timeout){
var obj = {};
obj.add = function(type, text){
var nId = $rootScope.notices.length + 1;
$rootScope.notices.push({id: nId, type:type, text:text+nId});
$timeout(function(){
obj.close(nId);
},3000);
}
obj.close = function(nId){
angular.forEach($rootScope.notices, function(notice, key){
if(notice.id == nId){
$rootScope.notices.splice(key,1);
}
});
}
return obj;
});
答案 1 :(得分:-2)
Heres怎么做
$timeout(function () {
// do something
}, 50);