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 相关文章推荐
JavaScript开发时的五个注意事项
Dec 08 Javascript
jQuery EasyUI API 中文文档 DateTimeBox日期时间框
Oct 16 Javascript
js和as的稳定传值问题解决
Jul 14 Javascript
js实现跨域的4种实用方法原理分析
Oct 29 Javascript
理解Angular数据双向绑定
Jan 10 Javascript
JavaScript  cookie 跨域访问之广告推广
Apr 20 Javascript
jquery自定义表单验证插件
Oct 12 Javascript
原生Javascript插件开发实践
Jan 18 Javascript
js实现PC端和移动端刮卡效果
Mar 27 Javascript
vue axios整合使用全攻略
May 24 Javascript
ES6入门教程之Array.from()方法
Mar 23 Javascript
如何在vue中使用kindeditor富文本编辑器
Dec 19 Vue.js
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操作mysqli(示例代码)
2013/10/28 PHP
PHP实现删除字符串中任何字符的函数
2015/08/11 PHP
PHP中Closure类的使用方法及详解
2015/10/09 PHP
基于jquery的网页SELECT下拉框美化代码
2010/10/28 Javascript
Jquery 数组操作大全个人总结
2013/11/13 Javascript
javascript学习笔记(一)基础知识
2014/09/30 Javascript
jQueryUI DatePicker 添加时分秒
2016/06/04 Javascript
JavaScript操作 url 中 search 部分方法函数
2016/06/15 Javascript
JavaScript实现in-place思想的快速排序方法
2016/08/07 Javascript
Angular路由简单学习
2016/12/26 Javascript
js脚本编写简单刷票投票系统
2017/06/27 Javascript
vue-cli如何引入bootstrap工具的方法
2017/10/19 Javascript
webpack3之loader全解析
2017/10/26 Javascript
解决Vue 浏览器后退无法触发beforeRouteLeave的问题
2017/12/24 Javascript
Vue工程模板文件 webpack打包配置方法
2017/12/26 Javascript
利用js实现前后台传送Json的示例代码
2018/03/29 Javascript
vue实现新闻展示页的步骤详解
2019/04/11 Javascript
Vue的生命周期操作示例
2019/09/17 Javascript
Electron 调用命令行(cmd)
2019/09/23 Javascript
为react组件库添加typescript类型提示的方法
2020/06/15 Javascript
[00:10]DOTA2全国高校联赛速递
2018/05/30 DOTA
python通过floor函数舍弃小数位的方法
2015/03/17 Python
在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
2015/04/09 Python
Python3中正则模块re.compile、re.match及re.search函数用法详解
2018/06/11 Python
对django后台admin下拉框进行过滤的实例
2019/07/26 Python
Django认证系统实现的web页面实现代码
2019/08/12 Python
简单了解python关键字global nonlocal区别
2020/09/21 Python
如何使用python-opencv批量生成带噪点噪线的数字验证码
2020/12/21 Python
英国领先的独立酒精饮料零售商:DrinkSupermarket
2021/01/13 全球购物
DOUGLAS荷兰:购买香水和化妆品
2020/10/24 全球购物
大学生自荐信
2013/12/11 职场文书
成品仓管员工作职责
2013/12/29 职场文书
医学专业毕业生推荐信
2014/07/12 职场文书
2015年挂职干部工作总结
2015/05/14 职场文书
初中生物教学反思
2016/02/20 职场文书
Elasticsearch Recovery 详细介绍
2022/04/19 Java/Android