gpt4 book ai didi

javascript - setTimeout 中的函数不会修改 $scope 变量/CSS 属性

转载 作者:太空宇宙 更新时间:2023-11-04 11:52:27 25 4
gpt4 key购买 nike

我正在与 setTimeout() 作斗争,甚至无法理解问题所在。我首先认为这是一个范围问题,但无法修复。

我想延迟 DIV 的隐藏/取消隐藏,让我的不透明度 CSS 过渡开始,但是当我单击 alert_button 淡出然后隐藏警报时,它只会淡出,我只剩下一个不可见的 div .延迟的 $scope.alert_token 没有切换到“true”,我的警报的不透明度停留在 1。

应用程序.js:

angular.module('myApp', [])
.controller('myCtrl', function($scope) {
$scope.alert_token = true // hide if true
$scope.alert_message = ""
$scope.p_name = ""

$scope.isInArray = function(arr, item) {
// IF ITEM IS ALREADY IN ARRAY
if (arr.indexOf(item) > -1) {
$scope.alert_token = !$scope.alert_token
$scope.alert_message = "Entry already exists"
setTimeout(function() {
document.getElementById("alert").style.opacity = "1"
}, 305)
}
else ...
}

$scope.submit = function(listType) {
if (listType == "player") {
$scope.isInArray(p_list, $scope.p_name)
$scope.p_name = ""
}
else ...
}

$scope.closeAlert = function() {
document.getElementById("alert").style.opacity = "0"
setTimeout(function() {
$scope.alert_token = !$scope.alert_token
}, 305)
}

最佳答案

发生在 Angular 知识之外的任何事情都不会更新到 DOM。在你的情况下它的 setTimeout。而是使用 $timeout

......
.controller('myCtrl', function($scope, $timeout) {...
^^^^^^^^
//Other code
....
$scope.closeAlert = function() {
document.getElementById("alert").style.opacity = "0"
$timeout(function() {//$timeout
$scope.alert_token = !$scope.alert_token
}, 305)
}

此外,由于您使用的是 angularJS,要更新 CSS 属性,我建议您使用 ngClass ngStyle

关于javascript - setTimeout 中的函数不会修改 $scope 变量/CSS 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30537349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com