angalrjs中的复选框绑定
Checkboxes binding in AngualrJS
我有两个复选框,一个有数据绑定,另一个没有数据绑定。如下面的代码所示:
<html ng-app="notesApp">
<head><title>Notes App</title></head>
<body ng-controller="MainCtrl as ctrl">
<div>
<h2>What are your favorite sports?</h2>
<div ng-repeat="sport in ctrl.sports">
<label ng-bind="sport.label"></label>
<div>
With Binding:
<input type="checkbox" data-ng-true-value="YES" data-ng-false-value="NO" >
</div>
<div>
Using ng-checked:
<input type="checkbox" data-ng-checked='sport.selected === "YES"'>
</div>
<div>
Current state : {{sport.selected}}
</div>
</div>
</div>
<script type="text/javascript" src="angular.js"></script>
<script type="text/javascript">
angular.module('notesApp',[])
.controller('MainCtrl',[function(){
var self = this;
self.sports = [
{label:'Basketball',selected: 'YES'},
{label:'Cricket',selected:'NO'},
{label:'Soccer',selected:'NO'},
{label:'Swimming',selected:'YES'}
];
}]);
</script>
</body>
</html>
当我点击'with data binding'复选框时,它应该绑定并反映当前状态标签中的值。但这并没有发生。为什么?。
我发现你的代码有两个问题:
- 你忘了
ng-model
- 你应该为
ng-true-value
和ng-false-value
指定一个常量,通过指定YES
, angular将在作用域上查找YES
属性,写'YES'
代替
更新工作规划:
http://plnkr.co/edit/rnYRUpIICC7HAKdKXf3i?p =
预览<html ng-app="notesApp">
<head>
<title>Notes App</title>
</head>
<body ng-controller="MainCtrl as ctrl">
<div>
<h2>What are your favorite sports?</h2>
<div ng-repeat="sport in ctrl.sports">
<label ng-bind="sport.label"></label>
<div>
With Binding:
<input type="checkbox" ng-model="sport.selected" data-ng-true-value="'YES'" data-ng-false-value="'NO'" />
</div>
<div>
Using ng-checked:
<input type="checkbox" data-ng-checked="sport.selected === 'YES'" />
</div>
<div>
Current state : {{sport.selected}}
</div>
</div>
</div>
<script src="https://code.angularjs.org/1.4.3/angular.js"></script>
<script type="text/javascript">
angular.module('notesApp',[])
.controller('MainCtrl',[function(){
var self = this;
self.sports = [
{label:'Basketball',selected: 'YES'},
{label:'Cricket',selected:'NO'},
{label:'Soccer',selected:'NO'},
{label:'Swimming',selected:'YES'}
];
}]);
</script>
</body>
</html>
编辑:正如@g00glen00b所提到的,在angular 1.3之前,ng-true-value
只接受常量值,所以如果你不使用angular 1.3或更高版本,你不必把YES
用引号括起来。
当您使用input[checkbox]
指令时使用data-ng-true-value
和data-ng-false-value
,但它们确实需要ngModel
,正如您在文档中看到的(注意ng-model
不在方括号中)。
如果不提供模型,AngularJS就无法知道在哪里应用true/false值。添加data-ng-model
似乎确实有效,正如您在下面的小提琴中看到的那样。
<input type="checkbox" ng-model="sport.selected"
data-ng-true-value="YES"
data-ng-false-value="NO" />
另外,请注意,当使用AngularJS 1.3或更高版本时,ng-true-value
和ng-false-value
的值应该是一个表达式而不是一个常量值。这意味着对于AngularJS 1.3及更高版本,你必须将其替换为ng-true-value="'YES'"
,例如:
<input type="checkbox" ng-model="sport.selected"
data-ng-true-value="'YES'"
data-ng-false-value="'NO'" />
您没有将"data-ng-model"属性应用于复选框。请从下面替换您的"With binding"复选框代码:
<input type="checkbox" data-ng-model="sport.selected" data-ng-true-value="YES" data-ng-false-value="NO" >
相关文章:
- 将角度材质设计复选框绑定到控制器中的数组
- Openlayers 3为了可见性而绑定到Vector层的复选框没有任何作用
- 具有 json 的挖空绑定复选框组
- 挖空绑定复选框组
- KO 绑定复选框:从代码更改“选中”属性,不更改可观察字段
- 将函数事件绑定到更改函数的复选框/标签
- JsViews复选框从内部循环绑定
- 如何绑定到单击以切换复选框
- 在angular js中绑定多个复选框
- ng动态生成的html/ionic复选框内的更改不绑定
- 如果父项具有onclick绑定,则复选框单击将被忽略
- 去掉js可观察数组和复选框,选中绑定失败
- AngularJs 将模型属性绑定到复选框
- 将两个数组绑定到一组复选框中 - angularjs
- 挖空.js和复选框的双向绑定
- 将可绑定复选框列添加到 Internet Explorer 中的网格
- 在AngularJS中绑定复选框或多选下拉列表
- 同时绑定复选框列表
- 基于AngularJS中字段值的绑定复选框
- 使用Knockout.js创建数据绑定复选框时未选择任何内容