详解使用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 相关文章推荐
js异或加解密效果代码
Jun 25 Javascript
csdn 批量接受好友邀请
Feb 19 Javascript
js控制div及网页相关属性的代码
Dec 19 Javascript
基于jquery实现的上传图片及图片大小验证、图片预览效果代码
Apr 12 Javascript
JQuery的ready函数与JS的onload的区别详解
Nov 21 Javascript
基于JavaScript判断浏览器到底是关闭还是刷新(超准确)
Feb 01 Javascript
学习使用bootstrap的modal和carousel
Dec 09 Javascript
BootStrapTable 单选及取值的实现方法
Jan 10 Javascript
JS 设置Cookie 有效期 检测cookie
Jun 15 Javascript
微信小程序中button组件的边框设置的实例详解
Sep 27 Javascript
Vue2.0父子组件传递函数的教程详解
Oct 16 Javascript
vue实现的请求服务器端API接口示例
May 25 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日期和时间函数集合
2007/11/16 PHP
php下获取http状态的实现代码
2014/05/09 PHP
PHP实现获取域名的方法小结
2014/11/05 PHP
PHP经典面试题之设计模式(经常遇到)
2015/10/15 PHP
php实现的后台表格分页功能示例
2017/10/23 PHP
PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
2020/04/26 PHP
测试你的JS的掌握程度的代码
2009/12/09 Javascript
用Javascript来生成ftp脚本的小例子
2013/07/03 Javascript
jquery等待效果示例
2014/05/01 Javascript
PHP中CURL的几个经典应用实例
2015/01/23 Javascript
AngularJS基础学习笔记之简单介绍
2015/05/10 Javascript
zepto中使用swipe.js制作轮播图附swipeUp,swipeDown不起效果问题
2015/08/27 Javascript
JS DOMReady事件的六种实现方法总结
2016/11/23 Javascript
Bootstrap风格的zTree右键菜单
2017/02/17 Javascript
Swiper实现轮播图效果
2017/07/03 Javascript
javascript基本常用排序算法解析
2017/09/27 Javascript
vue中改变选中当前项的显示隐藏或者状态的实现方法
2018/02/08 Javascript
vue-cli脚手架引入图片的几种方法总结
2018/03/13 Javascript
浅析Vue中拆分视图层代码的5点建议
2019/08/15 Javascript
js时间转换毫秒的实例代码
2019/08/21 Javascript
微信小程序class封装http代码实例
2019/08/24 Javascript
[02:54]辉夜杯主赛事第二日败者组 iG.V赛后采访
2015/12/26 DOTA
Python实现查找系统盘中需要找的字符
2015/07/14 Python
python实时分析日志的一个小脚本分享
2017/05/07 Python
Python数据分析之如何利用pandas查询数据示例代码
2017/09/01 Python
Python实现string字符串连接的方法总结【8种方式】
2018/07/06 Python
Python使用enumerate获取迭代元素下标
2020/02/03 Python
Python数据可视化处理库PyEcharts柱状图,饼图,线性图,词云图常用实例详解
2020/02/10 Python
Django框架静态文件处理、中间件、上传文件操作实例详解
2020/02/29 Python
python中tab键是什么意思
2020/06/18 Python
幼儿园教师节感谢信
2015/01/23 职场文书
法务专员岗位职责
2015/02/14 职场文书
《雷雨》教学反思
2016/02/20 职场文书
导游词之阆中古城
2019/12/23 职场文书
html form表单基础入门案例讲解
2021/07/15 HTML / CSS
使用JS前端技术实现静态图片局部流动效果
2022/08/05 Javascript