为什么复选框始终显示错误值

时间:2014-05-17 07:51:57

标签: angularjs

我有像这样的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 个答案:

答案 0 :(得分:1)

在您的代码中,ng-model绑定到childCtrl的范围,但parentCtrl内的代码正在访问由parentCtrl创建的范围。< / p>

您可以尝试使用this代替$scope来触发范围触发功能:

if(this.selectAll){

然后使用ng-change

ng-change="selectAllChange()"

clickchange事件确实意味着不同的事情:click表示鼠标按下并在同一元素上鼠标向上,change表示值已更改。当您使用ng-click时,ng-model 尚未更新基础值。

DEMO