AngularJS:ng-model不绑定到ng-checked的复选框

Abi*_*ash 77 angularjs angularjs-ng-model angularjs-ng-checked

在提出这个问题之前我曾提到这一点.

AngularJs不与ng-model绑定ng-checked

如果在旁边ng-checked进行评估,则不会更新.我不能像上面的问题那样建议,因为我必须为每个复选框使用一些样式.truehtmlng-modelng-repeat

这是我创建的用于说明我的问题的plunker.

http://plnkr.co/edit/YsOsPh3vjkPMUUDa6r2t

要查看我想要的内容,请打开控制台,然后单击Submit按钮.请不要勾选任何复选框.

提前致谢!

Lan*_*don 122

ngModelngChecked并不意味着要一起使用.

ngChecked期待一个表达式,所以说ng-checked="true",你基本上是说默认情况下总会检查复选框.

您应该能够使用ngModel,绑定到模型上的布尔属性.如果你想要别的东西,那么你需要使用ngTrueValuengFalseValue(现在只支持字符串),或编写自己的指令.

你究竟想做什么?如果您只想在默认情况下选中第一个复选框,则应更改模型 - item1: true,.

编辑:您不必提交表单来调试模型的当前状态,顺便说一下,您可以直接转储{{testModel}}到HTML(或<pre>{{testModel|json}}</pre>)中.您的ngModel属性也可以简化为ng-model="testModel.item1".

http://plnkr.co/edit/HtdOok8aieBjT5GFZOb3?p=preview

  • @Abilash你不应该使用`ngChecked`.你的模型很好,你只需要在你的ajax回调中设置`testModel.item1 = true`然后调用`$ scope.$ apply()`来更新你的视图. (5认同)
  • 我们错误地使用`ng-checked`而不是'ng-model` ......再也不用了! (2认同)

JRT*_*JRT 11

您可以使用ng-value-true来告知angular您的ng-model是一个字符串.

如果我添加这样的额外引号,我只能得到ng-true-value有效(如官方Angular文档中所示 - https://docs.angularjs.org/api/ng/input/input%5Bcheckbox%5D)

ng-true-value="'1'"
Run Code Online (Sandbox Code Playgroud)