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 相关文章推荐
jQuery 瀑布流 绝对定位布局(二)(延迟AJAX加载图片)
May 23 Javascript
Javascript数组的排序 sort()方法和reverse()方法
Jun 04 Javascript
详解jQuery插件开发中的extend方法
Nov 19 Javascript
JavaScript中的Truthy和Falsy介绍
Jan 01 Javascript
深入理解JavaScript系列(19):求值策略(Evaluation strategy)详解
Mar 05 Javascript
jquery实现多条件筛选特效代码分享
Aug 28 Javascript
js友好的时间返回函数
Aug 24 Javascript
深入理解选择框脚本[推荐]
Dec 13 Javascript
jquery无法为动态生成的元素添加点击事件的解决方法(推荐)
Dec 26 Javascript
AngularJS中的缓存使用
Jan 11 Javascript
vue组件初学_弹射小球(实例讲解)
Sep 06 Javascript
angular使用md5,CryptoJS des加密的方法
Jun 03 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
php中文本数据翻页(留言本翻页)
2006/10/09 PHP
php HtmlReplace输入过滤安全函数
2010/07/03 PHP
php设计模式 DAO(数据访问对象模式)
2011/06/26 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
如何通过Apache在本地配置多个虚拟主机
2020/07/29 PHP
js 实现无缝滚动 兼容IE和FF
2009/07/15 Javascript
jQuery-Tools-overlay 使用介绍
2012/07/14 Javascript
关于JavaScript中原型继承中的一点思考
2012/07/25 Javascript
Js使用WScript.Shell对象执行.bat文件和cmd命令
2014/12/18 Javascript
JavaScript中的getTimezoneOffset()方法使用详解
2015/06/10 Javascript
jQuery+Ajax实现无刷新分页
2015/10/30 Javascript
js仿百度切换皮肤功能(html+css)
2016/07/10 Javascript
JSON与js对象序列化实例详解
2017/03/16 Javascript
详解nodejs微信公众号开发——5.素材管理接口
2017/04/11 NodeJs
React Native使用Modal自定义分享界面的示例代码
2017/10/31 Javascript
vue绑定的点击事件阻止冒泡的实例
2018/02/08 Javascript
Promise.all中对于reject的处理方法
2018/08/01 Javascript
JavaScript 反射和属性赋值实例解析
2019/10/28 Javascript
基于vue项目设置resolves.alias: '@'路径并适配webstorm
2020/12/02 Vue.js
[02:47]DOTA2亚洲邀请赛 HR战队出场宣传片
2015/02/07 DOTA
[00:27]DOTA2战队VP、Secret贺新春
2018/02/11 DOTA
[47:42]完美世界DOTA2联赛PWL S2 GXR vs Ink 第一场 11.19
2020/11/20 DOTA
python查询mysql中文乱码问题
2014/11/09 Python
Python学习小技巧之利用字典的默认行为
2017/05/20 Python
查看python安装路径及pip安装的包列表及路径
2019/04/03 Python
基于python实现高速视频传输程序
2019/05/05 Python
python GUI库图形界面开发之PyQt5布局控件QGridLayout详细使用方法与实例
2020/03/06 Python
Python中用xlwt制作表格实例讲解
2020/11/05 Python
美国定制钻石订婚戒指:Ritani
2017/12/08 全球购物
英国和世界各地预订便宜的酒店:LateRooms.com
2019/05/05 全球购物
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
2012/05/30 面试题
英文翻译的自我评价语句
2013/10/04 职场文书
电子商务专业求职信
2014/07/10 职场文书
民主生活会对照检查材料思想汇报
2014/09/27 职场文书
Python爬虫之爬取二手房信息
2021/04/27 Python
JS实现简单九宫格抽奖
2022/06/28 Javascript