Рассмотрим приведенный ниже сценарий.
У меня есть div, который будет сгенерирован на основе длины массива (в данном случае это 3).
Здесь я хотел установить флажокзначение всякий раз, когда оно изменяется.Но это возможно с ng-change
, но когда я нажимаю second div checkbox
(первый флажок отмечен / событие переключения), теперь $watch
не срабатывает.
Я хотел посмотреть значение первого флажкавсякий раз, когда это изменяется.(без использования ng-change
, потому что у меня есть другой сценарий, чтобы сделать первый флажок истинным, когда второй флажок div имеет значение 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>