2014-05-17 43 views
-1

我有HTML结构这样为什么复选框显示总是假值

<div ng-controller="parentCtrl"> 
    <div ng-controller="childCtrl"> 
     <input ng-model="selectAll" id="selectAll" type="checkbox" ng-click="selectAllChange()"></div> 
    </div> 
</div> 

这里是js代码

function parentCtrl($scope) { 
    $scope.selectAll = false; 

    $scope.selectAllChange = function() {  

     if($scope.selectAll){ 
      console.log('ttt'); 
     } 
     else 
      console.log('fff');  
    } 
} 
上复选框的点击其是否选中或不

,在控制台我总是得到fff 如何知道在这种情况下复选框是否被选中?

回答

1

在您的代码中,ng-model绑定到childCtrl的作用域,但parentCtrl中的代码正在访问由parentCtrl创建的作用域。

你可以尝试this而不是$scope拿到范围触发功能:

if(this.selectAll){ 

而且使用ng-change代替。

ng-change="selectAllChange()" 

clickchange事件的真正含义是不同的东西:click意味着按下鼠标和鼠标了相同的元素,change意味着值已更改。当您使用ng-click时,ng-model不会更新的基础值呢。

DEMO