对角度js来说是新手。我有以下代码
<div ng-controller="myCtl">
<input type='checkbox' ng-model='selectAll'/>Select All
<div ng-repeat="c in language.availableOptions">
<input type='checkbox' ng-model='language.opted[$index]'
ng-checked="selectAll" ng-true-value='{{c}}'
ng-false-value=""/>
{{c}}
</div>
{{selectAll}}
selected languages : {{language.opted}}
</div>
<script type="text/javascript">
/**
* Module
*
* Description
*/
var myApp = angular.module('myApp', []);
myApp.controller('myCtl', ['$scope', function($scope) {
$scope.language ={};
$scope.language.availableOptions = ["java","c","cpp","asp"];
$scope.language.opted=[];
$scope.selectAll=false;
}])
</script>
这个想法是,如果用户选择全部选择,那么将选择所有语言并更新相应的模型[language.opted]。
现在,如果我选择&#39;选择所有&#39;复选框选中所有checbox,但模型为空。为什么呢?
答案 0 :(得分:1)
请注意,此指令不应与ngModel一起使用,因为这可能会导致意外行为。
所以,试着以其他方式做这件事。
我建议在输入中使用ng-change
,在控制器中使用一个函数将每个模型设置为当前值:
ng-change="changeSelectedValue(language.opted[$index])"
在控制器中:
$scope.changeSelectedValue = function(value){
// Sets the value of every $scope.language.opted to "value"
}