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