详解使用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 相关文章推荐
为jQuery增加join方法的实现代码
Nov 28 Javascript
MooTools 页面滚动浮动层智能定位实现代码
Aug 23 Javascript
在浏览器窗口上添加遮罩层的方法
Nov 12 Javascript
js onkeypress与onkeydown 事件区别详细说明
Dec 13 Javascript
判断js对象是否拥有某一个属性的js代码
Aug 16 Javascript
JavaScript中的值类型转换介绍
Dec 31 Javascript
React.js入门学习第一篇
Mar 30 Javascript
JavaScript实现一个简易的计算器实例代码
May 10 Javascript
vue 中引用gojs绘制E-R图的方法示例
Aug 24 Javascript
JQuery搜索框自动补全(模糊匹配)功能实现示例
Jan 08 jQuery
vue+echarts实现可拖动节点的折线图(支持拖动方向和上下限的设置)
Apr 12 Javascript
bootstrap table列和表头对不齐的解决方法
Jul 19 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
重量级动漫纷纷停播!唯独OVERLORD第四季正在英魂之刃继续更新
2020/05/06 日漫
PHP数据库操作面向对象的优点
2006/10/09 PHP
PHP实现CSV文件的导入和导出类
2015/03/24 PHP
WordPress中获取指定分类及其子分类下的文章数目
2015/12/31 PHP
mysql desc(DESCRIBE)命令实例讲解
2016/09/24 PHP
实例分析PHP中PHPMailer发邮件
2017/12/13 PHP
js数组转json并在后台对其解析具体实现
2013/11/20 Javascript
js实现局部页面打印预览原理及示例代码
2014/07/03 Javascript
jQuery实现在列表的首行添加数据
2015/05/19 Javascript
javascript中使用未定义变量或值的情况分析
2016/07/19 Javascript
js实现为a标签添加事件的方法(使用闭包循环)
2016/08/02 Javascript
概述如何实现一个简单的浏览器端js模块加载器
2016/12/07 Javascript
解析如何利用iframe标签以及js制作时钟
2016/12/08 Javascript
Bootstrap datepicker日期选择器插件使用详解
2017/07/26 Javascript
ES6中Array.copyWithin()函数的用法实例详解
2017/09/16 Javascript
JavaScript 高性能数组去重的方法
2018/09/20 Javascript
javascript数组常见操作方法实例总结【连接、添加、删除、去重、排序等】
2019/06/13 Javascript
vue实现点击按钮下载文件功能
2019/10/11 Javascript
js将日期格式转换为YYYY-MM-DD HH:MM:SS
2020/09/18 Javascript
python爬虫_自动获取seebug的poc实例
2017/08/05 Python
python实现二维数组的对角线遍历
2019/03/02 Python
python如何制作缩略图
2019/04/30 Python
Flask框架学习笔记之模板操作实例详解
2019/08/15 Python
pandas 强制类型转换 df.astype实例
2020/04/09 Python
CSS3解析抖音LOGO制作的方法步骤
2019/04/11 HTML / CSS
html5通过postMessage进行跨域通信的方法
2017/12/04 HTML / CSS
英国女鞋购物网站:Moda in Pelle
2019/02/18 全球购物
土木工程毕业生自荐信
2013/09/21 职场文书
支行行长竞聘演讲稿
2014/05/15 职场文书
建筑工地宣传标语
2014/06/18 职场文书
党员四风自我剖析材料思想汇报
2014/09/13 职场文书
就业推荐表导师评语
2014/12/31 职场文书
英文感谢信范文
2015/01/21 职场文书
军事理论课感想
2015/08/11 职场文书
市语委办2016年第十九届“推普周”活动总结
2016/04/05 职场文书
JS实现刷新网页后之前浏览位置保持不变示例详解
2022/08/14 Javascript