详解使用angularjs的ng-options时如何设置默认值(初始值)


Posted in Javascript onJuly 18, 2017

这两天我用ng-options过程中遇到的初始值为空白的问题,记得去年就遇到过,怎么解决的忘记了,费了一阵子功夫之后解决了,想记下来,方便遇到同样问题的小伙伴当然还有自己。

1.场景:

就是做一个查询列表的弹窗,其中有一个条件需要用到下拉菜单,数据是用过ajax传递过去的。

详解使用angularjs的ng-options时如何设置默认值(初始值)

2.实现:

a.html:

<select ng-model="myselect" ng-options="o for o in options"></select>

b.js:

var url = 'xxxxxx';//该url只是举例,具体的代码要写可用的请求地址。 
$http.post(url). 
       success(functoin(data){ 
        $sope.options=data; //赋值给ng-options    
      });

我当时以为,html写好,动态数据传递给ng-options,这样下拉菜单就可以用了。运行之后也大致正常,只是下拉菜单是空白的,点击之后出现后台传递的数据,就多了第一个的空白项,点击弹出所有的下拉选项,选择要选的选项之后,空白项就又消失了。

详解使用angularjs的ng-options时如何设置默认值(初始值)

查看浏览器中加载好的html发现<select>标签中多了一个非后台传递的option:

<select ng-model="myselect" ng-options="o for o in options"> 
<option value="?"></option> 
<option value="0">--请选择--</option> 
. 
. 
</select>

有点讽刺的是,我去年开发的一个页面中的下拉菜单就遇到过这个问题,当时费了老大功夫才解决,但是怎么解决的竟然忘记了,没办法,我又试了一通ng-init都不行,依然出现空白的选择首先展示出来。

想了一下这个value="?" 有时候是“undefind”应该是ng-model="myselect"的初始值,当后端数据传递过来赋值给options之后(即:$sope.options=data;),angularjs一定是没有覆盖select的原始option,即$scope.myselect=undefind,而是在这个option基础上加上了后端传递过来的data数据,从而导致页面上下拉菜单中多出一个空白的下拉选项。

按照这个思路,又查了一下stackoverflow中的一些说法,我将js改成从为options赋值时就初始化myselect:

var url = 'xxxxxx';//该url只是举例,具体的代码要写可用的请求地址。 
$http.post(url). 
       success(functoin(data){ 
        $scope.options=data; //赋值给ng-options  
        $scope.myselect = $scope.options[0];   
      });

这样,问题真的解决了。 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
top.location.href 没有权限 解决方法
Aug 05 Javascript
了解jQuery技巧来提高你的代码
Jan 08 Javascript
js创建子窗口并且回传值示例代码
Jul 02 Javascript
js window.onload 加载多个函数和追加函数详解
Jan 08 Javascript
JavaScript脚本判断蜘蛛来源的方法
Sep 22 Javascript
js实现表单多按钮提交action的处理方法
Oct 24 Javascript
js实现的简单图片浮动效果完整实例
May 10 Javascript
微信js-sdk地理位置接口用法示例
Oct 12 Javascript
微信小程使用swiper组件实现图片轮播切换显示功能【附源码下载】
Dec 12 Javascript
iview在vue-cli3如何按需加载的方法
Oct 31 Javascript
vue2.x 通过后端接口代理,获取qq音乐api的数据示例
Oct 30 Javascript
基于postman获取动态数据过程详解
Sep 08 Javascript
js实现移动端导航点击自动滑动效果
Jul 18 #Javascript
JS实现点击Radio动态更新table数据
Jul 18 #Javascript
Angularjs的启动过程分析
Jul 18 #Javascript
关于javascript sort()排序你可能忽略的一点理解
Jul 18 #Javascript
jQuery扇形定时器插件pietimer使用方法详解
Jul 18 #jQuery
ES6中的rest参数与扩展运算符详解
Jul 18 #Javascript
ES6学习之变量的两种命名方法示例
Jul 18 #Javascript
You might like
PHP读取MySQL数据代码
2008/06/05 PHP
PHP 等比例缩放图片详解及实例代码
2016/09/18 PHP
Django 标签筛选的实现代码(一对多、多对多)
2018/09/05 PHP
jQuery使用手册之一
2007/03/24 Javascript
javascript中的new使用
2010/03/20 Javascript
JavaScript中for..in循环陷阱介绍
2013/11/12 Javascript
JS获取屏幕,浏览器窗口大小,网页高度宽度(实现代码)
2013/12/17 Javascript
javascript框架设计读书笔记之模块加载系统
2014/12/02 Javascript
apply和call方法定义及apply和call方法的区别
2015/11/15 Javascript
jquery制做精致的倒计时特效
2016/06/13 Javascript
jQuery可见性过滤选择器用法示例
2016/09/09 Javascript
JS弹性运动实现方法分析
2016/12/15 Javascript
Javascript基础回顾之(三) js面向对象
2017/01/31 Javascript
浅谈JS对html标签的属性的干预以及对CSS样式表属性的干预
2017/06/25 Javascript
Vue.js单向绑定和双向绑定实例分析
2018/08/14 Javascript
Vue中的vue-resource示例详解
2018/11/02 Javascript
Nuxt项目支持eslint+pritter+typescript的实现
2019/05/20 Javascript
Vue实现点击当前元素以外的地方隐藏当前元素(实现思路)
2019/12/04 Javascript
Javascript模拟实现new原理解析
2020/03/03 Javascript
vue 项目引入echarts 添加点击事件操作
2020/09/09 Javascript
JS绘图Flot如何实现动态可刷新曲线图
2020/10/16 Javascript
Python 加密的实例详解
2017/10/09 Python
浅析Python 实现一个自动化翻译和替换的工具
2019/04/14 Python
详解Python用三种方式统计词频的方法
2019/07/29 Python
python代码打印100-999之间的回文数示例
2019/11/24 Python
Django REST 异常处理详解
2020/07/15 Python
婚鞋、新娘鞋、礼服鞋、童鞋:Nina Shoes
2019/09/04 全球购物
医学专业毕业生个人求职信
2013/12/25 职场文书
健康家庭事迹材料
2014/05/02 职场文书
售房协议书
2014/08/19 职场文书
党员查摆问题及整改措施
2014/10/10 职场文书
2014年售后服务工作总结
2014/11/18 职场文书
检察院起诉意见书
2015/05/20 职场文书
关于童年的读书笔记
2015/06/26 职场文书
职工培训工作总结
2015/08/10 职场文书
90行Python代码开发个人云盘应用
2021/04/20 Python