函数中的$scope变量值没有更改

$scope variable value is not changing in a function

本文关键字:变量值 scope 函数      更新时间:2023-09-26

我已经将一个范围变量传递给了一个函数,我试图在该函数中更改它,即使该值在函数内部是可访问的,它的值也不会更改。

这是我的html

<div class="console_item" ng-class="dropdwns.assetshow==true?'showdrp':'hidedrp'" ng-click="drpdwn(dropdwns.assetshow)">Asset Type</div>

这是我的控制器中的代码

$scope.dropdwns={assetshow:false};
$scope.drpdwn=function(dat){
    if(dat==true)
    {
        dat=false;
    }
    else
    {
        dat=true;
    }
    console.log($scope.dropdwns);
}

我尝试了$apply,但它给了我一个错误。有人能帮我吗?谢谢。

您只需要设置正确的变量

$scope.dropdwns={assetshow:false};
$scope.drpdwn=function(dat){
    $scope.dropdwns.assetshow = !dat; // Here
    console.log($scope.dropdwns);
};

您应该将对象传递给函数,而不是它的属性:

    <div class="console_item" ng-class="dropdwns.assetshow==true?'showdrp':'hidedrp'" ng-click="drpdwn(dropdwns)">Asset Type</div>
    $scope.drpdwn=function(dat){
    if(dat.assetshow == true)
    {
        dat.assetshow = false;
    }
    else
    {
        dat.assetshow = true;
    }
    //A more simple version dat.assetshow = !dat.assetshow
    console.log($scope.dropdwns);
}

最短的答案:

 <div class="console_item" ng-class="{'showdrp':dropdwns.assetshow, 'hidedrp':!dropdwns.assetshow}" ng-click="dropdwns.assetshow = !dropdwns.assetshow">Asset Type</div>