详解使用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 动态酷效果实现总结
Dec 27 Javascript
Javascript倒计时代码
Aug 12 Javascript
javascript ajax 仿百度分页函数
Oct 29 Javascript
判断及设置浏览器全屏模式
Apr 20 Javascript
jQuery删除一个元素后淡出效果展示删除过程的方法
Mar 18 Javascript
js改变style样式和css样式的简单实例
Jun 28 Javascript
jquery动态添加文本并获取值的方法
Oct 12 Javascript
JS针对Array的各种操作汇总
Nov 29 Javascript
基于jQuery实现选项卡效果
Jan 04 Javascript
基于js的变量提升和函数提升(详解)
Sep 17 Javascript
Angular5整合富文本编辑器TinyMCE的方法(汉化+上传)
May 26 Javascript
three.js中多线程的使用及性能测试详解
Jan 07 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分页类代码
2013/04/02 PHP
php ci框架中加载css和js文件失败的解决方法
2014/03/03 PHP
PHP 数组遍历foreach语法结构及实例
2016/06/13 PHP
!DOCTYPE声明对JavaScript的影响分析
2010/04/12 Javascript
JavaScript代码实现禁止右键、禁选择、禁粘贴、禁shift、禁ctrl、禁alt
2015/11/17 Javascript
jquery实现倒计时效果
2015/12/14 Javascript
JavaScript 不支持 indexof 该如何解决
2016/03/30 Javascript
JS实现图片的不间断连续滚动的简单实例
2016/06/03 Javascript
AngularJS入门教程之过滤器用法示例
2016/11/02 Javascript
require、backbone等重构手机图片查看器
2016/11/17 Javascript
input框中自动展示当前日期yyyy/mm/dd的实现方法
2017/07/06 Javascript
vue2.0在table中实现全选和反选的示例代码
2017/11/04 Javascript
js根据json数据中的某一个属性来给数据分组的方法
2018/10/08 Javascript
vue 双向数据绑定的实现学习之监听器的实现方法
2018/11/30 Javascript
微信小程序后台持续定位功能使用详解
2019/08/23 Javascript
基于JS实现table导出Excel并保留样式
2020/05/19 Javascript
JS使用setInterval计时器实现挑战10秒
2020/11/08 Javascript
[00:35]DOTA2上海特级锦标赛 MVP.Phx战队宣传片
2016/03/04 DOTA
python通过正则查找微博@(at)用户的方法
2015/03/13 Python
Python利用字典将两个通讯录文本合并为一个文本实例
2018/01/16 Python
python正则表达式爬取猫眼电影top100
2018/02/24 Python
Python实现的微信好友数据分析功能示例
2018/06/21 Python
解决Python2.7中IDLE启动没有反应的问题
2018/11/30 Python
python交互界面的退出方法
2019/02/16 Python
python图形开发GUI库wxpython使用方法详解
2020/02/14 Python
Python json读写方式和字典相互转化
2020/04/18 Python
纯css3无js实现的Android Logo(有简单动画)
2013/01/21 HTML / CSS
检测浏览器是否支持html5视频的代码
2013/03/28 HTML / CSS
加拿大领先的时尚和体育零售商:Sporting Life
2019/12/15 全球购物
店长助理岗位职责
2013/12/13 职场文书
大学生个人实习的自我评价
2014/02/15 职场文书
乡镇干部十八大感言
2014/02/17 职场文书
导游词之苏州盘门景区
2019/11/12 职场文书
css 中多种边框的实现小窍门
2021/04/07 HTML / CSS
Python闭包的定义和使用方法
2022/04/11 Python
Redis keys命令的具体使用
2022/06/05 Redis