Angularjs 将选择列表绑定到布尔值时出现奇怪的绑定/验证行为
在将选择列表绑定到布尔值时,有人能解释一下以下奇怪的绑定/验证行为吗 选择“是”(true)将按预期工作。选择“否”(false)显然不会: JSFIDDLE:Angularjs 将选择列表绑定到布尔值时出现奇怪的绑定/验证行为,angularjs,Angularjs,在将选择列表绑定到布尔值时,有人能解释一下以下奇怪的绑定/验证行为吗 选择“是”(true)将按预期工作。选择“否”(false)显然不会: JSFIDDLE: $scope.trueFalseOptions=[{ 价值观:正确, 标签:“是” }, { 值:false, 标签:“否” }]; 我做错什么了吗?我希望能够从下拉列表中选择“是”或“否”。选项项的值应为true或false(布尔值,而不是字符串) 谢谢你的帮助>P>>要求指令不考虑 false 的值,并将模型值设置为未定义: :
$scope.trueFalseOptions=[{
价值观:正确,
标签:“是”
}, {
值:false,
标签:“否”
}];
我做错什么了吗?我希望能够从下拉列表中选择“是”或“否”。选项项的值应为true或false(布尔值,而不是字符串)
谢谢你的帮助>P>><代码>要求指令不考虑<代码> false <代码>的值,并将模型值设置为<代码>未定义: : 以下是一些选项:
ngRequired
而不是required
。这允许您选择自定义必需表达式,如:ng required=“!(myModel==true | | myModel==false)”
。举个例子required
指令,该指令将允许false另请注意,您可能希望添加一个空选项值,以便在选择第一项后,第一项不会说“是”:
<select name="parameter" ng-model="myModel" ng-options="x.value as x.label for x in trueFalseOptions">
<option value=""></option>
</select>
完美答案@Gloopy!谢谢在调试了2个小时后,您又为我节省了至少2个小时。谢谢
var validator = function(value) {
if (attr.required && (isEmpty(value) || value === false)) {
ctrl.$setValidity('required', false);
return;
} else {
ctrl.$setValidity('required', true);
return value;
}
};
<select name="parameter" ng-model="myModel" ng-options="x.value as x.label for x in trueFalseOptions">
<option value=""></option>
</select>