2014-05-17 42 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