详解使用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 相关文章推荐
为EasyUI的Tab标签添加右键菜单的方法
Jul 14 Javascript
jQuery实现设置、移除文本框默认值功能
Jan 13 Javascript
jQuery实现流动虚线框的方法
Jan 29 Javascript
Jquery实现仿腾讯娱乐频道焦点图(幻灯片)特效
Mar 06 Javascript
JS实现简单路由器功能的方法
May 27 Javascript
JavaScript中获取时间的函数集
Aug 16 Javascript
如何用js判断dom是否有存在某class的值
Feb 13 Javascript
Bootstrap的popover(弹出框)2秒后定时消失的实现代码
Feb 27 Javascript
jQuery EasyUI Panel面板组件使用详解
Feb 28 Javascript
如何在vue里添加好看的lottie动画
Aug 02 Javascript
你或许不知道的一些npm实用技巧
Jul 04 Javascript
JavaScript数组及常见操作方法小结
Nov 13 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中对于浮点型的数据需要用不同的方法解决
2014/03/11 PHP
phpMyAdmin自动登录和取消自动登录的配置方法
2014/05/12 PHP
提交表单后 PHP获取提交内容的实现方法
2016/05/25 PHP
php字符串操作针对负值的判断分析
2016/07/28 PHP
网页图片延时加载的js代码
2010/04/22 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之三
2012/01/03 Javascript
jquery validate在ie8下的bug解决方法
2013/11/13 Javascript
jquery操作cookie插件分享
2014/01/14 Javascript
判断iframe里的页面是否加载完成
2014/06/06 Javascript
Js实现自定义右键行为
2015/03/26 Javascript
javascript编写贪吃蛇游戏
2015/07/07 Javascript
详解javascript立即执行函数表达式IIFE
2017/02/13 Javascript
Vue分页组件实例代码
2017/04/17 Javascript
jQuery替换节点元素的操作方法
2018/03/18 jQuery
Vue 开发音乐播放器之歌手页右侧快速入口功能
2018/08/08 Javascript
对vue事件的延迟执行实例讲解
2018/08/28 Javascript
node错误处理与日志记录的实现
2018/12/24 Javascript
vue cli 3.0 搭建项目的图文教程
2019/05/17 Javascript
uni-app 支持多端第三方地图定位的方法
2020/01/03 Javascript
python如何通过twisted实现数据库异步插入
2018/03/20 Python
Python实现的基于优先等级分配糖果问题算法示例
2018/04/25 Python
python高阶爬虫实战分析
2018/07/29 Python
用python画一只可爱的皮卡丘实例
2019/11/21 Python
Python requests模块cookie实例解析
2020/04/14 Python
Html5页面二次分享的实现
2018/07/30 HTML / CSS
泰国健康和美容服务预订网站:GoWabi
2019/06/03 全球购物
英国奢侈品在线精品店:Hervia
2020/09/03 全球购物
车间核算员岗位职责
2014/07/01 职场文书
2015建军节87周年演讲稿
2015/03/19 职场文书
2015学生会文艺部工作总结
2015/04/03 职场文书
针对吵架老公保证书
2015/05/08 职场文书
2015秋季开学典礼新闻稿
2015/07/17 职场文书
2016年习总书记讲话学习心得体会
2016/01/20 职场文书
学校就业保障协议书
2019/06/24 职场文书
MySQL创建索引需要了解的
2021/04/08 MySQL
JavaScript文档对象模型DOM
2021/11/20 Javascript