javascript - AngularJS 1.2.0-rc.3 有什么变化阻止 ng-click 获得正确的模型值?

标签 javascript angularjs angularjs-ng-click

我们在 ng-click 中有一些代码与版本 1.2.0-rc.3 中断,因为作用域中的值尚未从点击更新。这是一个简化的版本:

HTML:

<div ng-app="" ng-controller="MyCtrl">
    <input type="checkbox" ng-model="checkAll" ng-click="allChecked()"/>
    <input type="checkbox" ng-model="check1"/>
    <input type="checkbox" ng-model="check2"/>
    <input type="checkbox" ng-model="check3"/>
    <input type="checkbox" ng-model="check4"/>
    <input type="checkbox" ng-model="check5"/>
    <p/>
    All: {{checkAll}}<br/>
    1: {{check1}}<br/>
    2: {{check2}}<br/>
    3: {{check3}}<br/>
    4: {{check4}}<br/>
    5: {{check5}}<br/>
</div>

JavaScript:

function MyCtrl($scope)
{
    $scope.allChecked = function() {
        console.log($scope.checkAll);
        if ($scope.checkAll)
        {

            $scope.check1 = true;
            $scope.check2 = true;
            $scope.check3 = true;
            $scope.check4 = true;
            $scope.check5 = true;
        }
        else
        {
            $scope.check1 = false;
            $scope.check2 = false;
            $scope.check3 = false;
            $scope.check4 = false;
            $scope.check5 = false;
        }
    }
}

摆弄 1.2.0-rc.2:http://jsfiddle.net/73E26/

现在使用 1.2.0-rc.3 ( http://jsfiddle.net/LZR6j/ ) 的完全相同的设置,它现在不再按预期工作。 $scope.checkAll 为 false,即使它已被检查。因此,在调用点击监听器之前,模型不会像 1.2.0-rc.2 那样得到更新。是什么改变导致了这个?我发现我可以通过使用 ng-change 而不是 ng-click ( http://jsfiddle.net/8VV7N/ ) 来完成这项工作,但我想了解发生了什么我根据它做出 future 的决定。谁能阐明这一点?

最佳答案

问题是 ng-clickng-modelambiguous priority如果您在同一个元素上定义它们,则不清楚它们将以什么顺序被触发。

例如看这个问题:Clicking a checkbox with ng-click does not update the model

关于javascript - AngularJS 1.2.0-rc.3 有什么变化阻止 ng-click 获得正确的模型值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19964722/

相关文章:

javascript - Bootstrap 3 : Click over button doesn't work

jquery - Angular : Scroll to top on click with jquery animate

javascript - React 不执行组件中的函数

javascript - 如何删除复选框生成的span标签

javascript - 使用 angularJS 过滤器的 Ionic 应用程序非常慢

javascript - Angular 将输入值传递给 $rootScope 变量

javascript - 如何为选择列表的自定义指令实现 ng-change?

angularjs - 我可以同时使用 ng-click 和 onclick

javascript - 如何在 Atom 或任何其他 IDE 中获取 Javascript 模块的智能感知?

javascript - 无法自动滚动 JavaScript slider