选中时返回值

w6mmgewl  于 2021-09-29  发布在  Java
关注(0)|答案(2)|浏览(304)

我正在尝试将一个值返回到$scope,这取决于是否在angular js中选中了复选框,但似乎无法这样做。有办法让它工作吗?
html:

<div class=" specialClause col-md-10 " >
<label for="TAR">Tag Along Rights: <input type="checkbox" ng-model="TAR" ng-change="myFunc()" name="TAR" id="TAR"/></label>

js:

$scope.dej= function(){
   if($scope.TAR) {
       console.log('TAR');
       var tar = 'Yes';
   }else{
       console.log('no TAR');
       var tar = 'no';
   }
   return tar;
};

但是我不能在函数外访问tar。有没有一种方法可以实现 tar 函数之外的值?

htzpubme

htzpubme1#

首先,您的更改函数是myfunc,您使用 dej 功能。
第二,你可以像这样把你的逻辑写在一行中 return $scope.TAR ? 'Yes' : 'No' 另外,我也不确定你要做什么。但在下面的代码段中,值yes或no被添加到一个范围变量中,例如,可以在html中访问该变量。
如果这不是你想要的,请在评论中告诉我。
请参阅下面的代码片段:

angular.module('myApp', [])
  .controller("example", ["$scope", function($scope) {
    $scope.tar = 'No'
    $scope.myFunc = function() {
      $scope.tar = $scope.TAR ? 'Yes' : 'No'
    }
  }])
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>
<div ng-app="myApp">
  <div ng-controller="example">
    <label for="TAR">Tag Along Rights: <input type="checkbox" ng-model="TAR" ng-change="myFunc()" name="TAR" id="TAR" /></label>
    Tar is : {{tar}}
  </div>
</div>
ioekq8ef

ioekq8ef2#

tar 仅在其声明的范围内可用,并且 ifelse 语句打开了一个新的范围。
解决办法是定义 tar 在其共同母公司范围内:

$scope.dej= function(){
   let tar;
   if($scope.TAR) {
       console.log('TAR');
       tar = 'Yes';
   }else{
       console.log('no TAR');
       tar = 'no';
   }
   return tar;
};

或者直接返回:

$scope.dej= function(){
   if($scope.TAR) {
       console.log('TAR');
       return "Yes";
   }

   return "no";
};

相关问题