如何从ng-repeat复选框中监视更改

时间:2019-02-04 14:41:25

标签: javascript html angularjs

请考虑以下情形。

我有一个div,它会根据数组的长度(在本例中为3)生成。

在这里,我想在更改复选框值时注意它。但是,ng-change是可能的,但是当我单击second div checkbox(选中第一个复选框/切换事件)时,现在$watch不会被触发。

无论何时更改,我都想观看第一个复选框的值。 (不使用ng-change,因为当第二个div复选框为true时,我还有另一种情况使第一个复选框为true。因此,ng-change在这种情况下将不起作用)

我在哪里失踪?

var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope) {
 $scope.roomIndex = 0;
 $scope.ROOMS = [
 {
 	 "name" : "abc",
   "id": 1,
 },
 {
 	 "name" : "def",
   "id": 1
 },
 {
 	 "name" : "ghj",
   "id": 1
 }
 ];
 
 $scope.$watch('room.check', function(newval, oldval){
 	console.log(newval);
 });
 
 $scope.changed = function(room){
 	console.log(room);
 }
 
 $scope.call = function(){
	
  if($scope.ROOMS[$scope.roomIndex].check){
    $scope.ROOMS[$scope.roomIndex].check =   false;
  }
  else{
  $scope.ROOMS[$scope.roomIndex].check =   true;
  }

 }
 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.8/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">

<div ng-init="roomIndex = $index" ng-repeat = "room in ROOMS track by $index">
    <p>
      {{room.name}}
    </p>
    <input type="checkbox" ng-model="room.check" ng-change="changed(room)"/>
</div>
<div>
  Second div checkbox <input type="checkbox" ng-model="check2" ng-change="call(roomIndex)"/>
</div>
</div>

0 个答案:

没有答案