Angularjs 将选择列表绑定到布尔值时出现奇怪的绑定/验证行为

Angularjs 将选择列表绑定到布尔值时出现奇怪的绑定/验证行为,angularjs,Angularjs,在将选择列表绑定到布尔值时,有人能解释一下以下奇怪的绑定/验证行为吗 选择“是”(true)将按预期工作。选择“否”(false)显然不会: JSFIDDLE: $scope.trueFalseOptions=[{ 价值观:正确, 标签:“是” }, { 值:false, 标签:“否” }]; 我做错什么了吗?我希望能够从下拉列表中选择“是”或“否”。选项项的值应为true或false(布尔值,而不是字符串) 谢谢你的帮助>P>>要求指令不考虑 false 的值,并将模型值设置为未定义: :

在将选择列表绑定到布尔值时,有人能解释一下以下奇怪的绑定/验证行为吗

选择“是”(true)将按预期工作。选择“否”(false)显然不会:

JSFIDDLE:

$scope.trueFalseOptions=[{
价值观:正确,
标签:“是”
}, {
值:false,
标签:“否”
}];
我做错什么了吗?我希望能够从下拉列表中选择“是”或“否”。选项项的值应为true或false(布尔值,而不是字符串)


谢谢你的帮助

>P>><代码>要求指令不考虑<代码> false <代码>的值,并将模型值设置为<代码>未定义:

:

以下是一些选项:

  • 使用
    ngRequired
    而不是
    required
    。这允许您选择自定义必需表达式,如:
    ng required=“!(myModel==true | | myModel==false)”
    。举个例子
  • 您可以创建自己的修改后的
    required
    指令,该指令将允许false
  • 绑定到其他对象(1和0或您提到的“true”和“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>