我已经将一个范围变量传递给一个函数,我试图改变它,即使该值在函数内部可以访问,其值也不会改变。
这是我的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但它给了我一个错误。有人帮我谢谢你。
答案 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>