使用AngularJS v1.5.0,我试图将无线电输入字段绑定到布尔变量,该变量可以是:true,false或null。使用ng-value指令将空值设置为false。
_([a-z]+)
您是否知道如何做到这一点? 谢谢!
答案 0 :(得分:1)
这在1.4.9中对我有用。 1.5.0和1.6.3
<span ng-init="foo = {value: null}">{{foo}}</span>
<input type="radio" ng-model="foo.value" ng-value="null" ng-checked="foo.value === null" />Null
<input type="radio" ng-model="foo.value" ng-value="true" />True
<input type="radio" ng-model="foo.value" ng-value="false" />False
答案 1 :(得分:0)
如果查看ngValue
指令的source code,您会注意到它只运行范围。$ eval()对值为true,false或数字。
var CONSTANT_VALUE_REGEXP = /^(true|false|\d+)$/;
var ngValueDirective = function() {
return {
restrict: 'A',
priority: 100,
compile: function(tpl, tplAttr) {
if (CONSTANT_VALUE_REGEXP.test(tplAttr.ngValue)) {
return function ngValueConstantLink(scope, elm, attr) {
attr.$set('value', scope.$eval(attr.ngValue));
};
} else {
return function ngValueLink(scope, elm, attr) {
scope.$watch(attr.ngValue, function valueWatchAction(value) {
attr.$set('value', value);
});
};
}
}
};
};
要克服此问题并在该组中包含null,您需要编写自己的指令,或者在提交表单时以编程方式处理转换值。