$ scope变量值在函数中没有变化

时间:2015-03-23 10:01:41

标签: javascript angularjs

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

这是我的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但它给了我一个错误。有人帮我谢谢你。

3 个答案:

答案 0 :(得分:0)

您只需设置正确的变量

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

答案 1 :(得分:0)

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

    <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);
}

答案 2 :(得分:0)

答案最短:

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