Angularjs - 复选框模型没有切换ng-change?

时间:2015-01-08 07:22:34

标签: javascript angularjs checkbox angular-ui

我有一个简单的复选框,如下所示:

<input type="checkbox" name="userGroup" ng-model="selectedAll" ng-change="selectAll();"></input>

我在控制器中将selectedAll模型启动为false。在我的selectAll()函数中,我记录了该标志的值。但它仍然是假的,当我选中并取消选中复选框时不会更新。有什么理由和解决方案吗?

更新

我的控制器代码:

$scope.selectedAll = false;

$scope.selectAll = function() {
    console.log($scope.selectedAll);
}

3 个答案:

答案 0 :(得分:3)

尝试使用&#39;点缀&#39; NG-模型:

<input type="checkbox" name="userGroup" ng-model="obj.selectedAll" ng-change="selectAll();"></input>

-

$scope.obj = {
  selectedAll: false
}

$scope.selectAll = function() {
  console.log($scope.obj.selectedAll);
}

答案 1 :(得分:0)

这里我创建了一个plnkr

<input type="checkbox" name="userGroup" ng-model="selectedAll" ng-change="selectAll();"></input>
{{selectedAll}}

它的变化标志也在我获得ng-change的更新价值

答案 2 :(得分:0)

我发现了这个问题。我使用angular-ui-router进行路由。有问题的复选框位于一个状态视图(视图B)中,该视图由该控制器控制。控制器也被其他一些状态视图(视图A)使用。在我的状态配置中,我已将此指定为View A的控制器,但不是View B的控制器,因为它是视图A的子节点,它应该继承控制器。只是为视图B明确指定了控制器,一切都开始工作。

简化:

A (normal view) > B(child view, contains checkbox)

.state('viewa', {
    url: '/viewa',
    templateUrl: '...',
    controller: 'someCtrl'
})

.state('viewa.viewb', {
    url: '/viewb',
    templateUrl: '...',
    controller: 'someCtrl' //ADDED THE CONTROLLER HERE
});

我希望这有助于使用有角度的ui路由器的人并面临同样的问题。