请考虑以下情形。
我有一个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>