Angular js模型没有得到更新

时间:2015-10-09 13:11:22

标签: angularjs checkbox angularjs-ng-model

对角度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,但模型为空。为什么呢?

1 个答案:

答案 0 :(得分:1)

查看ng-checked

的文档
  

请注意,此指令不应与ngModel一起使用,因为这可能会导致意外行为。

所以,试着以其他方式做这件事。

我建议在输入中使用ng-change,在控制器中使用一个函数将每个模型设置为当前值:

ng-change="changeSelectedValue(language.opted[$index])"

在控制器中:

$scope.changeSelectedValue = function(value){
  // Sets the value of every $scope.language.opted to "value"
}