AngularJS ng-checked 不改变模型值

标签 angularjs

我有一个带有复选框输入的对象表。如果选中了对象的复选框,则 object.isChecked值设置为 true ,如果未选中,则该值设置为 false .但是,我有一个主复选框,可以选中/取消选中表中的所有复选框。这不会更新 object.isChecked然而值(value)观。我如何让主复选框更改 object.isChecked值(value)观?

最佳答案

问题一定是您触发了不在 Angular 内的复选框。如果您希望 Angular 魔法发挥作用 - 您必须在 Angular 范围内进行所有模型操作。我创建了 a plunker to demonstrate. :

index.html

<!DOCTYPE html>
<html data-ng-app="demo">
  <head>
    <script data-require="jquery@1.9.0" data-semver="1.9.0" src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.9.0/jquery.js"></script>
    <script data-require="angular.js@*" data-semver="1.0.7" src="http://code.angularjs.org/1.0.7/angular.js"></script>
    <link rel="stylesheet" href="style.css" />
    <script src="script.js"></script>
  </head>
  <body data-ng-controller="DemoController">
    <div data-ng-repeat="object in objects">
      {{object.name}}: <input type="checkbox" data-ng-model="object.isChecked">
    </div>
    Master: <input type="checkbox" data-ng-click="triggerAll()">
    {{objects}}
  </body>
</html>

script.js
"use strict";

var demo = angular.module("demo", []);

function DemoController($scope) {
  $scope.objects = [
    {
      name : "First",
      isChecked : true
    },
    {
      name : "Second",
      isChecked : false
    }
  ]

  $scope.triggerAll = function(){
    angular.forEach($scope.objects, function(value){
      value.isChecked = !value.isChecked;
    })
  }
}

注意触发所有复选框是通过 ngClick 完成的, 与平常不一样 onClick或 jQuery 处理程序。这允许 Angular 运行脏检查并正确运行。

关于AngularJS ng-checked 不改变模型值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18220525/

相关文章:

javascript - AngularJS ng-view 不显示 View

javascript - 异步 XMLHttpRequest 响应后,ng-grid 未与最新数据绑定(bind)

javascript - AngularJS 隐藏#!重写

javascript - 如何在 Jenkins 中设置和运行 Angular JS Protractor 测试?

javascript - 如何将 for 循环转换为 AngularJs forEach?

javascript - 回调解决未处理的promise,为什么?

javascript - AngularJS函数,有无 '$'参数的区别

javascript - angularjs 表单验证显示空表单页面加载成功

angularjs - 带有stormPath java sdk的Angular应用程序

javascript - 如果存在多个模态框,模态框弹出窗口不会关闭