Javascript AngularJS$超时服务
我必须在3-4秒内看到一些东西。我正在尝试使用$timeout来实现这一点。以下是我目前得到的信息:Javascript AngularJS$超时服务,javascript,angularjs,Javascript,Angularjs,我必须在3-4秒内看到一些东西。我正在尝试使用$timeout来实现这一点。以下是我目前得到的信息: $timeout(function() { debugger; $scope.$on(broadcastService.topErrorBar.show, function(event, message) { $scope.rootElement.addClass('is-visible'); $scope.isVisible = true; $scope.m
$timeout(function() {
debugger;
$scope.$on(broadcastService.topErrorBar.show,
function(event, message) {
$scope.rootElement.addClass('is-visible');
$scope.isVisible = true;
$scope.message = message;
});
}, 3000);
$timeout.cancel(function() {
$scope.close();
});
$scope.close = function() {
$scope.rootElement.removeClass('is-visible');
$scope.isVisible = false;
};
这不起作用,我无法解决问题。我做错了什么?在这种情况下,我应该使用超时。那么:
$scope.$on(broadcastService.topErrorBar.show,
function(event, message) {
$scope.isVisible=false;
$timeout(function () { $scope.isVisible= true; }, 3000);
});
您必须在html中使用show=“isVisible”>它应该是这样的:
$scope.$on(broadcastService.topErrorBar.show,
function(event, message) {
$scope.rootElement.addClass('is-visible');
$scope.isVisible = true;
$scope.message = message;
$timeout(function() {
$scope.close();
}, 3000);
$scope.close = function() {
$scope.rootElement.removeClass('is-visible');
$scope.isVisible = false;
};
在广播时,使元素可见,启动超时,以便在3秒后调用$scope.close。不需要$timeout。在您的情况下取消。您的逻辑颠倒了。超时中的函数在时间过后激发。您希望元素可见,然后在超时函数中将可见性设置为false。这里有一个例子
var-app=angular.module('myApp',[]);
app.controller('myCtrl',函数($scope,$timeout){
$scope.visible=true;
$timeout(函数(){
$scope.visible=false;
}, 3000);
});代码>
这总是可见的。
这应该在3秒后隐藏
最佳解决方案imo。