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 相关文章推荐
window.opener用法和用途实例介绍
Aug 19 Javascript
常用的几段javascript代码分享
Mar 25 Javascript
JavaScript的jQuery库中ready方法的学习教程
Aug 14 Javascript
快速掌握Node.js事件驱动模型
Mar 21 Javascript
javascript和jquery实现用户登录验证
May 04 Javascript
微信和qq时间格式模板实例详解
Oct 21 Javascript
数组Array的一些方法(总结)
Feb 17 Javascript
《javascript少儿编程》location术语总结
May 27 Javascript
CSS3 动画卡顿性能优化的完美解决方案
Sep 20 Javascript
小程序中设置缓存过期的实现方法
Jan 14 Javascript
JavaScript Tab菜单实现过程解析
May 13 Javascript
js实现微信聊天效果
Aug 09 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操作mysql函数详解,mysql和php交互函数
2011/05/19 PHP
thinkphp视图模型查询提示ERR: 1146:Table 'db.pr_order_view' doesn't exist的解决方法
2014/10/30 PHP
浅析Node.js的Stream模块中的Readable对象
2015/07/29 Javascript
省市联动效果的简单实现代码(推荐)
2016/06/06 Javascript
jQuery easyui刷新当前tabs的方法
2016/09/23 Javascript
Javascript 链式作用域详细介绍
2017/02/23 Javascript
详解nodeJS之路径PATH模块
2017/05/31 NodeJs
详解Vue CLI3 多页应用实践和源码设计
2018/08/30 Javascript
vue单页面实现当前页面刷新或跳转时提示保存
2018/11/02 Javascript
微信小程序使用swiper组件实现层叠轮播图
2018/11/04 Javascript
js类的继承定义与用法分析
2019/06/21 Javascript
解决vue组件销毁之后计时器继续执行的问题
2020/07/21 Javascript
解决ant Design中Select设置initialValue时的大坑
2020/10/29 Javascript
[50:24]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python 自动安装 Rising 杀毒软件
2009/04/24 Python
玩转python爬虫之正则表达式
2016/02/17 Python
python实现简单聊天应用 python群聊和点对点均实现
2017/09/14 Python
python3+dlib实现人脸识别和情绪分析
2018/04/21 Python
Python判断字符串是否为字母或者数字(浮点数)的多种方法
2018/08/03 Python
Python3爬虫学习入门教程
2018/12/11 Python
Python线程之定位与销毁的实现
2019/02/17 Python
python中几种自动微分库解析
2019/08/29 Python
Windows系统下pycharm中的pip换源
2020/02/23 Python
Python使用Excel将数据写入多个sheet
2020/05/16 Python
卸载tensorflow-cpu重装tensorflow-gpu操作
2020/06/23 Python
HTML5中的Scoped属性使用实例
2014/04/23 HTML / CSS
伦敦哈德森鞋:Hudson Shoes
2018/02/06 全球购物
Farnell德国:电子元器件供应商
2018/07/10 全球购物
JAVA中的关键字有什么特点
2014/03/07 面试题
大专生简历的自我评价
2013/11/26 职场文书
应届毕业生个人求职信范文
2014/01/29 职场文书
物业管理工作方案
2014/05/10 职场文书
婚礼庆典答谢词
2015/01/20 职场文书
帝企鹅日记观后感
2015/06/10 职场文书
《我们的民族小学》教学反思
2016/02/19 职场文书
react 路由Link配置详解
2021/11/11 Javascript