加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-17 17:30:57 所属栏目:安全 来源:网络整理
导读:将选择列表绑定到布尔值时,有人能解释一下以下奇怪的绑定/验证行为吗? 选择“是”(true)按预期工作.选择“否”(假)显然不会: 的jsfiddle: http://jsfiddle.net/mhu23/ATRQG/14/ $scope.trueFalSEOptions = [{ value: true,label: 'Yes'},{ value: false,l
将选择列表绑定到布尔值时,有人能解释一下以下奇怪的绑定/验证行为吗?

选择“是”(true)按预期工作.选择“否”(假)显然不会:

的jsfiddle:
http://jsfiddle.net/mhu23/ATRQG/14/

$scope.trueFalSEOptions = [{
    value: true,label: 'Yes'
},{
    value: false,label: 'No'
}];

<select name="parameter" required ng-model="myModel" ng-options="x.value as x.label for x in trueFalSEOptions"></select>

难道我做错了什么?我希望能够从下拉列表中选择“是”或“否”.选项的值应为true或false(布尔值,而不是字符串).

谢谢你的帮助!

解决方法

看起来必需的指令不会将false值视为有效,并将模型值设置为undefined:

Github source link:

var validator = function(value) {
    if (attr.required && (isEmpty(value) || value === false)) {
      ctrl.$setValidity('required',false);
      return;
    } else {
      ctrl.$setValidity('required',true);
      return value;
    }
  };

以下是一些选项:

>使用ngRequired而不是必需.这允许您选择自定义的必需表达式,如:ng-required =“!(myModel == true || myModel == false)”.以Here is a fiddle为例.
>您可以创建自己的修改后的必需指令,允许使用false
>绑定到别的东西(1和0,或者像你提到的“真”和“假”)

另请注意,您可能需要添加一个空选项值,以便第一项在选择后不显示“是”:

<select name="parameter" ng-model="myModel" ng-options="x.value as x.label for x in trueFalSEOptions">
   <option value=""></option>
</select>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读