我在提出这个问题之前提到了这一点:AngularJs doesn't bind ng-checked with ng-model
如果ng-checked
在html
端被计算为true
,ng-model
不会被更新,我不能像上面的问题中建议的那样使用ng-repeat
,因为我必须为每个复选框使用一些样式。
下面是我为说明我的问题而创建的plunker。
http://plnkr.co/edit/YsOsPh3vjkPMUUDa6r2t
要查看我想要的内容,请打开控制台,然后单击Submit
按钮。请不要选中任何复选框。
7条答案
按热度按时间tquggr8v1#
ngModel
和ngChecked
不应一起使用。ngChecked
需要一个表达式,所以说ng-checked="true"
,基本上就是说复选框在默认情况下总是被选中的。你应该可以只使用
ngModel
,绑定到你的模型上的一个布尔属性,如果你想要其他的,那么你要么需要使用ngTrueValue
和ngFalseValue
(现在只支持字符串),要么编写你自己的指令。您到底想做什么呢?如果您只想在默认情况下选中第一个复选框,那么您应该更改您的模型-
item1: true,
。编辑:您不必提交表单来调试模型的当前状态,顺便说一句,您可以直接将
{{testModel}}
转储到HTML(或<pre>{{testModel|json}}</pre>
)中,而且您的ngModel
属性可以简化为ng-model="testModel.item1"
。http://plnkr.co/edit/HtdOok8aieBjT5GFZOb3?p=preview
xriantvc2#
你可以使用ng-value-true来告诉angular你的ng-model是一个字符串。
只有添加额外的引号,ng-true-value才能工作(如官方Angular docs -https://docs.angularjs.org/api/ng/input/input%5Bcheckbox%5D所示)
myss37ts3#
你能做的就是使用
ng-repeat
,把你正在迭代的任何东西的值传递给ng-checked
,然后从那里利用ng-class
根据结果应用你的样式。我最近做了类似的事情,它对我很有效。
8dtrkrch4#
在ng-init中也可以声明为真
您可以选择第一个和对象也显示在这里真,假,假
jtjikinw5#
ng-model
和ng-checked
指令不应一起使用来自文档:
ng已检查
如果
ngChecked
中的表达式为真,则设置元素的checked属性。ngModel
**一起使用,因为这可能导致意外行为。而是从控制器设置所需的初始值:
5cnsuln76#
使用
ng-model
时不需要ng-checked
,如果在HTML Form上执行CRUD,只需为CREATE
模式创建一个模型,该模型与数据绑定时的EDIT
模式一致即可:创建模式:仅具有默认值的模型
编辑模式:数据库中的模型
然后,无论是
EDIT
还是CREATE
模式,您都可以始终如一地使用ng-model
与数据库同步。7y4bm7vi7#
我在处理从1.2到1.3的Angular js迁移时遇到了这个问题。输入类型复选框没有被触发,如果它是从控制器启动的,以及ng更改事件也没有被触发。我尝试了所有类型,因为ng模型沿着ng检查都不起作用。然后以简单的事情结束,它对我起作用了,比如通过替换为ng单击来删除ng更改事件。