当值设置为 false 时,ng-show 不会隐藏我的元素
ng-show doesnt hide my element when value is set to false
我正在处理一个网页,该网页显示某段文字然后将其隐藏。显示部分有效,隐藏部分无效:
HTML
<div ng-show="uploadComplete" class="col-sm-2 control-label">Upload Complete</div>
Javascript
$http.post('/rest/upload-data', {msg:'hello word!'}).
success(function(data, status, headers, config) {
console.log(data + " " + status)
$scope.uploadInProgress = false;
$scope.uploadComplete = true;
setTimeout(function() {$scope.uploadComplete = false; console.log($scope.uploadComplete);}, 3000);
}).
error(function(data, status, headers, config) {
console.log(data + " " + status)
$scope.uploadInProgress = false;
$scope.uploadFailed = true;
setTimeout(function() {$scope.uploadFailed = false}, 3000);
});
标签在请求端点时正确显示,
但它永远不会消失。控制台将变量集记录为 false。
我做错了什么?
setTimeout 不会触发摘要。使用 $timeout 或 $scope.$apply.
setTimeout 的 Angular 等价物是 $timeout
服务(参见 here)。
您的语法将是:
$timeout(function() {$scope.uploadFailed = false}, 3000);
不要忘记将它注入到您使用它的任何地方。
尽量不要使用 $scope.$apply
,因为除非绝对必要,否则最好让 Angular 处理摘要周期。
您可以尝试使用 $scope.$apply()
设置 $scope.uploadComplete = false;
甚至 angular 的 $timeout
。
我正在处理一个网页,该网页显示某段文字然后将其隐藏。显示部分有效,隐藏部分无效:
HTML
<div ng-show="uploadComplete" class="col-sm-2 control-label">Upload Complete</div>
Javascript
$http.post('/rest/upload-data', {msg:'hello word!'}).
success(function(data, status, headers, config) {
console.log(data + " " + status)
$scope.uploadInProgress = false;
$scope.uploadComplete = true;
setTimeout(function() {$scope.uploadComplete = false; console.log($scope.uploadComplete);}, 3000);
}).
error(function(data, status, headers, config) {
console.log(data + " " + status)
$scope.uploadInProgress = false;
$scope.uploadFailed = true;
setTimeout(function() {$scope.uploadFailed = false}, 3000);
});
标签在请求端点时正确显示,
但它永远不会消失。控制台将变量集记录为 false。
我做错了什么?
setTimeout 不会触发摘要。使用 $timeout 或 $scope.$apply.
setTimeout 的 Angular 等价物是 $timeout
服务(参见 here)。
您的语法将是:
$timeout(function() {$scope.uploadFailed = false}, 3000);
不要忘记将它注入到您使用它的任何地方。
尽量不要使用 $scope.$apply
,因为除非绝对必要,否则最好让 Angular 处理摘要周期。
您可以尝试使用 $scope.$apply()
设置 $scope.uploadComplete = false;
甚至 angular 的 $timeout
。