Javascript $scope变量值在函数中未更改
我已将一个范围变量传递给一个函数,在该函数中,我试图更改它,即使该值在函数内部可以访问,但它的值不会更改 这是我的htmlJavascript $scope变量值在函数中未更改,javascript,angularjs,Javascript,Angularjs,我已将一个范围变量传递给一个函数,在该函数中,我试图更改它,即使该值在函数内部可以访问,但它的值不会更改 这是我的html <div class="console_item" ng-class="dropdwns.assetshow==true?'showdrp':'hidedrp'" ng-click="drpdwn(dropdwns.assetshow)">Asset Type</div> 我尝试了$apply,但它给了我一个错误。有人能帮我吗?谢谢。您只需设置正确
<div class="console_item" ng-class="dropdwns.assetshow==true?'showdrp':'hidedrp'" ng-click="drpdwn(dropdwns.assetshow)">Asset Type</div>
我尝试了$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>
dat是一个局部变量。它不是指针。更改它不会更改原始参数。因此,我必须为每个对象编写单独的函数?不。如果翻转布尔值是您真正想要做的唯一事情,那么最简单的方法就是删除该函数并只执行dropdwns.assetshow=!视图中的dropdwns.assetshow。为什么要更改dat,为什么不直接执行:$scope.dropdwns.asstshow=$scope.dropdwns.asstshow在函数中的位置?您可以在HTML中执行以下操作:ng click=dropdwns.asstshow=!dropdwns.asstshow,如果它比布尔翻转更复杂,那么您可以执行dropdwns.assetshow=drpdwndropdwns.assetshow并从函数返回新值。dropdwns是一个类似assetshow的对象列表。我不能将assetshow=等同于!此外,这是一个小例子,我没有原始代码,所以它不仅仅是真/假
<div class="console_item" ng-class="{'showdrp':dropdwns.assetshow, 'hidedrp':!dropdwns.assetshow}" ng-click="dropdwns.assetshow = !dropdwns.assetshow">Asset Type</div>