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遇到页面卡死的解决方法
Mar 12 Javascript
浅析javascript的间隔调用和延时调用
Nov 12 Javascript
Javascript实现禁止输入中文或英文的例子
Dec 09 Javascript
完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
Jan 08 Javascript
微信小程序 wx:for的使用实例详解
Apr 27 Javascript
JS沙箱模式实例分析
Sep 04 Javascript
详解VueJS应用中管理用户权限
Feb 02 Javascript
jQuery动态添加li标签并添加属性和绑定事件方法
Feb 24 jQuery
使用vue中的v-for遍历二维数组的方法
Mar 07 Javascript
Vue-Router的使用方法
Sep 05 Javascript
Vuex实现数据增加和删除功能
Nov 11 Javascript
小程序跳转H5页面的方法步骤
Mar 06 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字符串 ==比较运算符的副作用
2009/10/21 PHP
如何使用php绘制在图片上的正余弦曲线
2013/06/08 PHP
PHP和Shell实现检查SAMBA与NFS Server是否存在
2015/01/07 PHP
ecshop 2.72如何修改后台访问地址
2015/03/03 PHP
深入理解PHP类的自动载入机制
2016/09/16 PHP
php 多个变量指向同一个引用($b = &amp;$a)用法分析
2019/11/13 PHP
php经典趣味算法实例代码
2020/01/21 PHP
javascript实现动态CSS换肤技术的脚本
2007/06/29 Javascript
js substr、substring和slice使用说明小记
2011/09/15 Javascript
jquery 扑捉回车键事件代码
2014/04/24 Javascript
jquery获取html元素的绝对位置和相对位置的方法
2014/06/20 Javascript
JavaScript 学习笔记之基础中的基础
2015/01/13 Javascript
HTML5游戏引擎LTweenLite实现的超帅动画效果(附demo源码下载)
2016/01/26 Javascript
BootStrap table删除指定行的注意事项(笔记整理)
2017/02/05 Javascript
代码详解javascript模块加载器
2018/03/04 Javascript
JavaScript Math对象和调试程序的方法分析
2019/05/13 Javascript
关于element-ui的隐藏组件el-scrollbar的使用
2019/05/29 Javascript
微信小程序基础教程之worker线程的使用方法
2019/07/15 Javascript
基于element-ui封装可搜索的懒加载tree组件的实现
2020/05/22 Javascript
js 图片懒加载的实现
2020/10/21 Javascript
VUE-ElementUI 自定义Loading图操作
2020/11/11 Javascript
[54:27]TNC vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
[42:32]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.27
2020/12/01 DOTA
批量获取及验证HTTP代理的Python脚本
2017/04/23 Python
Python中join函数简单代码示例
2018/01/09 Python
python实现守护进程、守护线程、守护非守护并行
2018/05/05 Python
详解如何将python3.6软件的py文件打包成exe程序
2018/10/09 Python
python微信公众号之关注公众号自动回复
2018/10/25 Python
详解pyppeteer(python版puppeteer)基本使用
2019/06/12 Python
python获取txt文件词向量过程详解
2019/07/05 Python
python中tkinter的应用:修改字体的实例讲解
2019/07/17 Python
python读取csv文件指定行的2种方法详解
2020/02/13 Python
美国第二大连锁药店:Rite Aid
2019/04/03 全球购物
*p++ 自增p 还是p所指向的变量
2016/07/16 面试题
开水果连锁店创业计划书
2013/12/29 职场文书
分析设计模式之模板方法Java实现
2021/06/23 Java/Android