当前位置: 移动技术网 > IT编程>脚本编程>AngularJs > angularjs下拉框空白的解决办法

angularjs下拉框空白的解决办法

2017年12月12日  | 移动技术网IT编程  | 我要评论

镖行天下下载,下山兰花拍卖网,武林风王洪祥视频

搜索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。如果读者有兴趣,可以自己实现后续的功能,对于我来说,已经可以满足需要了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网