Angularjs 模型变量的相互影响

Angularjs 模型变量的相互影响,angularjs,Angularjs,我有一个简单的GUI,我想通过纯AngularJS实现——这里有两组(或更多)复选框: 以下是链接中的代码: HTML: 选中其中一个组的复选框后,其他组的所有复选框都应取消选中(显然,更改应反映在模型中) 我试图$watch标记模型变量,并在$watch回调中将其他组的变量设置为false。问题是每当$watch回调更改标记时,它都会触发$watch回调 什么是正确的AngularJS解决方案 提前谢谢 使用ng change代替$watch: 比如: $scope.changed = f

我有一个简单的GUI,我想通过纯AngularJS实现——这里有两组(或更多)复选框:

以下是链接中的代码:

HTML:

选中其中一个组的复选框后,其他组的所有复选框都应取消选中(显然,更改应反映在模型中)

我试图
$watch
标记
模型变量,并在
$watch
回调中将其他组的变量设置为false。问题是每当
$watch
回调更改
标记时,它都会触发
$watch
回调

什么是正确的AngularJS解决方案


提前谢谢

使用
ng change
代替
$watch

比如:

  $scope.changed = function(item, type){
    console.log(item);

    if((type == 'aaa' || type == 'ccc') ){
      $scope.tag.zzz = !item;
    }
    else  if(type == 'zzz'){
      $scope.tag.aaa = !item;
      $scope.tag.ccc = !item;
    }        
  }
HTML


演示

angular.module('myApp', [])
.controller('MyController', function($scope){
  $scope.tag = {aaa: true};
});
  $scope.changed = function(item, type){
    console.log(item);

    if((type == 'aaa' || type == 'ccc') ){
      $scope.tag.zzz = !item;
    }
    else  if(type == 'zzz'){
      $scope.tag.aaa = !item;
      $scope.tag.ccc = !item;
    }        
  }
 <div class="group">
    <input type="checkbox" ng-model="tag.aaa" ng-change="changed(tag.aaa,'aaa')"/>
    <input type="checkbox" ng-model="tag.ccc" ng-change="changed(tag.ccc,'ccc')"/>
  </div>
  <div class="group">
    <input type="checkbox" ng-model="tag.zzz"  ng-change="changed(tag.zzz, 'zzz')"/>
  </div>