angularjs下拉框空白的解决办法


Posted in Javascript onJune 20, 2017

搜索angularjs下拉框空白,可以出现很多解决方案,但是对于静态字段来说,网上目前还没有找到解决方案,如下:

<select class="form-control" ng-model="UserState"
  ng-init="UserState=0">
 <option value="-1">选择状态</option>
 <option value="0">在职</option>
 <option value="1">离职</option>

 </select>

如果要按照网上的方法来解决,首先需要把下拉选项存放到一个对象数组当中,对于一个两个下拉框还好说,如果项目当中有很多这种下拉框,就要费好大劲了。最简单粗暴的方法是修改angularjs源代码,不再生成空白符。奈何功力有限,未能找到相应添加空白行的地方,不过值得欣慰的是,发现出现空白符是因为使用了ng-model的原因,干脆写个指令来替代ng-model的功能也可以解决下拉空白的问题,于是写了一个指令:

app.directive("dModel",function () {
  return {
   restrict:'A',
   compile:function(element, attrs, transclude){
    console.log(transclude);
    var dModel=attrs["dModel"];
    return{
     pre:function(scope, iElement, iAttrs){

      var selectValue=scope[dModel]+"";
      if(selectValue)
      {
       var options=element.children();
       for(var i=0;i<options.length;i++)
       {
        if(selectValue==options[i].value)
        {
         options[i].setAttribute("selected",true);
         break;
        }
       }
      }
     },
     post:function(scope, iElement, iAttrs){
      element.on("change",function () {
       var selectValue=this.value;
       scope.$apply(function () {
        scope[dModel]= selectValue;
       });
      })
     }
    }
   }

  }
 });

用该指令替代ng-model即可实现相同的功能,同时不会出现下拉空白,当然,这个指令毕竟是自己随便写的几行代码,远远不如ng-model强大,比如动态修改指令绑定的值来改变选中项还不能实现,仅仅可以在第一次初始化时绑定选中项,另外也不支持ng-selected。如果读者有兴趣,可以自己实现后续的功能,对于我来说,已经可以满足需要了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS 文件本身编码转换 图文教程
Oct 12 Javascript
判断js对象是否拥有某一个属性的js代码
Aug 16 Javascript
同域jQuery(跨)iframe操作DOM(示例代码)
Dec 13 Javascript
技术男用来对妹子表白的百度首页
Jul 23 Javascript
ES6的新特性概览
Mar 10 Javascript
React中使用collections时key的重要性详解
Aug 07 Javascript
JS实现的缓冲运动效果示例
Apr 30 Javascript
如何封装了一个vue移动端下拉加载下一页数据的组件
Jan 06 Javascript
angularjs请求数据的方法示例
Aug 06 Javascript
JsonProperty 的使用方法详解
Oct 11 Javascript
vue-form表单验证是否为空值的实例详解
Oct 29 Javascript
JS实现随机抽选获奖者
Nov 07 Javascript
JS使用ActiveXObject实现用户提交表单时屏蔽敏感词功能
Jun 20 #Javascript
20行js代码实现的贪吃蛇小游戏
Jun 20 #Javascript
详解vue-resource promise兼容性问题
Jun 20 #Javascript
ionic2自定义cordova插件开发以及使用(Android)
Jun 19 #Javascript
详解vue2.0 transition 多个元素嵌套使用过渡
Jun 19 #Javascript
vue中如何实现变量和字符串拼接
Jun 19 #Javascript
js实现随机数字字母验证码
Jun 19 #Javascript
You might like
discuz免激活同步登入代码修改方法(discuz同步登录)
2013/12/24 PHP
PHP生成条形码大揭秘
2015/09/24 PHP
Joomla框架实现字符串截取的方法示例
2017/07/18 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
wordpress自定义标签云与随机获取标签的方法详解
2019/03/22 PHP
通过下拉框的值来确定输入框是否可以为空的代码
2011/10/18 Javascript
JS解决ie6下png透明的方法实例
2013/08/02 Javascript
JavaScrip实现PHP print_r的数功能(三种方法)
2013/11/12 Javascript
基于jquery实现的自动补全功能
2015/03/12 Javascript
jQuery实现鼠标悬停显示提示信息窗口的方法
2015/04/30 Javascript
jQuery隐藏和显示效果实现
2016/04/06 Javascript
关于JS变量和作用域详解
2016/07/28 Javascript
详解js实现线段交点的三种算法
2016/08/09 Javascript
HTML5 canvas 9绘制图片实例详解
2016/09/06 Javascript
用js控件div的滚动条,让它在内容更新时自动滚到底部的实现方法
2016/10/27 Javascript
AngularJS使用ng-Cloak阻止初始化闪烁问题的方法
2016/11/03 Javascript
axios post提交formdata的实例
2018/03/16 Javascript
小程序实现授权登陆的解决方案
2018/12/02 Javascript
vue组件间通信六种方式(总结篇)
2019/05/15 Javascript
layui表格分页 记录勾选的实例
2019/09/02 Javascript
详解Vue数据驱动原理
2020/11/17 Javascript
[01:02:10]DOTA2上海特级锦标赛B组小组赛#2 VG VS Fnatic第一局
2016/02/26 DOTA
python 提取文件的小程序
2009/07/29 Python
python实现各进制转换的总结大全
2017/06/18 Python
wxpython实现按钮切换界面的方法
2019/11/19 Python
python实现上传文件到linux指定目录的方法
2020/01/03 Python
Python-for循环的内部机制
2020/06/12 Python
移动端Web页面的CSS3 flex布局快速上手指南
2016/05/31 HTML / CSS
css3边框_动力节点Java学院整理
2017/07/11 HTML / CSS
英国家庭珠宝商:T. H. Baker
2018/02/08 全球购物
Europcar意大利:汽车租赁
2019/07/07 全球购物
SOA的常见陷阱或者误解是什么
2014/10/05 面试题
授权委托书(公民个人适用)
2014/09/19 职场文书
乡镇干部个人对照检查材料(群众路线)
2014/09/26 职场文书
个人典型事迹材料
2014/12/30 职场文书
经营场所使用证明
2015/06/19 职场文书