详解使用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 相关文章推荐
JavaScript之appendChild、insertBefore和insertAfter使用说明
Dec 30 Javascript
jquery 设置元素相对于另一个元素的top值(实例代码)
Nov 06 Javascript
Bootstrap选项卡动态切换效果
Nov 28 Javascript
jquery实现焦点轮播效果
Feb 23 Javascript
基于Vue实现图书管理功能
Oct 17 Javascript
小程序云开发初探(小结)
Oct 24 Javascript
jQuery实现的别踩白块小游戏完整示例
Jan 07 jQuery
微信公众号服务器验证Token步骤图解
Dec 30 Javascript
浅谈VUE中演示v-for为什么要加key
Jan 16 Javascript
从零使用TypeScript开发项目打包发布到npm
Feb 14 Javascript
开发Node CLI构建微信小程序脚手架的示例
Mar 27 Javascript
Element Notification通知的实现示例
Jul 27 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/04/25 PHP
解决微信授权回调页面域名只能设置一个的问题
2016/12/11 PHP
php基于Redis消息队列实现的消息推送的方法
2018/11/28 PHP
基于PHP实现微信小程序客服消息功能
2019/08/12 PHP
XRegExp 0.2: Now With Named Capture
2007/11/30 Javascript
网易JS面试题与Javascript词法作用域说明
2010/11/09 Javascript
使用js在页面中绘制表格核心代码
2013/09/16 Javascript
js对象转json数组的简单实现案例
2014/02/28 Javascript
javascript关于open.window子页面执行完成后刷新父页面的问题分析
2015/04/27 Javascript
基于jQuery实现以手风琴方式展开和折叠导航菜单
2016/01/28 Javascript
jQuery 3.0十大新特性
2016/07/06 Javascript
AngularJS学习笔记(三)数据双向绑定的简单实例
2016/11/08 Javascript
vue.js+Element实现表格里的增删改查
2017/01/18 Javascript
jQuery移除或禁用html元素点击事件常用方法小结
2017/02/10 Javascript
javascript作用域链与执行环境详解
2017/03/25 Javascript
bootstrap suggest下拉框使用详解
2017/04/10 Javascript
vue2.0学习之axios的封装与vuex介绍
2018/05/28 Javascript
详解Vue webapp项目通过HBulider打包原生APP
2018/06/29 Javascript
基于vue-upload-component封装一个图片上传组件的示例
2018/10/16 Javascript
Nginx设置为Node.js的前端服务器方法总结
2019/03/27 Javascript
Layer组件多个iframe弹出层打开与关闭及参数传递的方法
2019/09/25 Javascript
vuejs中父子组件之间通信方法实例详解
2020/01/17 Javascript
Node.js API详解之 readline模块用法详解
2020/05/22 Javascript
python pandas 如何替换某列的一个值
2018/06/09 Python
python numpy 显示图像阵列的实例
2018/07/02 Python
用Python将mysql数据导出成json的方法
2018/08/21 Python
Python求平面内点到直线距离的实现
2020/01/19 Python
使用python绘制cdf的多种实现方法
2020/02/25 Python
Django模板标签中url使用详解(url跳转到指定页面)
2020/03/19 Python
英国舒适型鞋履品牌:FitFlop
2017/05/17 全球购物
加拿大最大的钻石商店:Peoples Jewellers
2018/01/01 全球购物
护理助产毕业生的求职信
2014/03/02 职场文书
离婚协议书标准格式
2014/10/04 职场文书
餐饮服务员岗位职责
2015/02/09 职场文书
装修公司工程部经理岗位职责
2015/04/09 职场文书
深入理解pytorch库的dockerfile
2022/06/10 Python