AngularJS:ng模型未绑定到ng选中复选框
在提出这个问题之前,我提到了这一点 如果在html端将ng checked计算为true,则不会更新ng模型。我不能重复上面问题中的建议,因为我必须为每个复选框使用一些样式 这是我为说明我的问题而创建的plunker 要查看我想要什么,请打开控制台,然后单击Submit按钮。请不要勾选任何复选框 提前谢谢 ngModel和ngChecked不能一起使用 ngChecked需要一个表达式,所以说ng checked=true,基本上就是说默认情况下复选框总是被选中的 您应该能够只使用ngModel,它与模型上的布尔属性相关联。如果您想要其他东西,那么您要么需要使用现在只支持字符串的ngTrueValue和ngFalseValue,要么编写自己的指令 你到底想做什么?如果您只想在默认情况下选中第一个复选框,则应更改您的模型-item1:true 编辑:您不必提交表单来调试模型的当前状态,顺便说一句,您只需将{{testModel}}转储到HTML或HTML中即可。此外,您的ngModel属性可以简化为ng model=testModel.item1AngularJS:ng模型未绑定到ng选中复选框,angularjs,angularjs-ng-model,angularjs-ng-checked,Angularjs,Angularjs Ng Model,Angularjs Ng Checked,在提出这个问题之前,我提到了这一点 如果在html端将ng checked计算为true,则不会更新ng模型。我不能重复上面问题中的建议,因为我必须为每个复选框使用一些样式 这是我为说明我的问题而创建的plunker 要查看我想要什么,请打开控制台,然后单击Submit按钮。请不要勾选任何复选框 提前谢谢 ngModel和ngChecked不能一起使用 ngChecked需要一个表达式,所以说ng checked=true,基本上就是说默认情况下复选框总是被选中的 您应该能够只使用ngModel
您可以使用ng value true告诉angular您的ng模型是一个字符串 如果我添加了官方文件中所示的额外引号,则我只能获得ng true value工作- 您可以使用ng repeat将迭代的内容的值传递给选中的ng,然后使用ng类根据结果应用样式
我最近做了一些类似的事情,它对我很有效。可以声明为InNG init也在变为现实
<input type="checkbox" name="test" ng-model="testModel['item1']" ̶n̶g̶-̶c̶h̶e̶c̶k̶e̶d̶=̶"̶t̶r̶u̶e̶"̶ />
Testing<br />
<input type="checkbox" name="test" ng-model="testModel['item2']" /> Testing 2<br />
<input type="checkbox" name="test" ng-model="testModel['item3']" /> Testing 3<br />
<input type="button" ng-click="submit()" value="Submit" />
您可以选择第一个和此处显示的对象true、false、flaseng model和ng checked指令不应一起使用
从文档中:
NGCHECK
如果ngChecked中的表达式为truthy,则在元素上设置checked属性
请注意,此指令不应与ngModel一起使用,因为这可能导致意外行为
-
而是从控制器设置所需的初始值:
$scope.testModel = { item1: true };
使用ng模型时,不需要检查ng。如果要在HTML表单上执行CRUD,只需为创建模式创建一个与数据绑定期间的编辑模式一致的模型:
创建模式:仅具有默认值的模型
编辑模式:来自数据库的模型
然后,无论是编辑模式还是创建模式,都可以始终使用ng模型与数据库同步。ng checked由表达式计算为true。为了表示ng模型未链接,我在那里使用了true。在启动控制器时,我希望取消选中所有复选框。在一些ajax请求之后,我计算ng checked以选中复选框。这是当我的ng模型没有更新时,您不应该使用ngChecked。您的模型很好,只需在ajax回调中设置testModel.item1=true,然后调用$scope.$apply来更新您的视图。我们刚刚犯了一个错误,使用ng checked代替ng模型。。。再也不会了!根据注释中的注释,thisngChecked指令不应与ngModel一起使用,因为这可能会导致意外行为。@Langdon i在这个问题上被耽搁了大约几个小时。。您的提示$scope.$apply解决了我的问题。非常感谢。ngInit只有几个合适的用途。此指令可能被滥用,以便在模板中添加不必要的逻辑量。瞧,谢谢,这是我的解决办法!
<input type="checkbox" name="test" ng-model="testModel['item1']" ̶n̶g̶-̶c̶h̶e̶c̶k̶e̶d̶=̶"̶t̶r̶u̶e̶"̶ />
Testing<br />
<input type="checkbox" name="test" ng-model="testModel['item2']" /> Testing 2<br />
<input type="checkbox" name="test" ng-model="testModel['item3']" /> Testing 3<br />
<input type="button" ng-click="submit()" value="Submit" />
$scope.testModel = { item1: true };
$scope.dataModel = {
isItemSelected: true,
isApproved: true,
somethingElse: "Your default value"
}
$scope.dataModel = getFromDatabaseWithSameStructure()