详解使用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 相关文章推荐
IE6与IE7中,innerHTML获取param的区别
Mar 15 Javascript
js写一个字符串转成驼峰的实例
Jun 21 Javascript
使用Js让Html中特殊字符不被转义
Nov 05 Javascript
Jquery实现点击按钮,连续地向textarea中添加值的实例代码
Mar 08 Javascript
javascript制作的网页侧边弹出框思路及实现代码
May 21 Javascript
JavaScript脚本库编写的方法
Dec 09 Javascript
JavaScript学习笔记之创建对象
Mar 25 Javascript
vuejs2.0运用原生js实现简单的拖拽元素功能示例
Feb 24 Javascript
vue.js学习之UI组件开发教程
Jul 03 Javascript
详解让sublime text3支持Vue语法高亮显示的示例
Sep 29 Javascript
JavaScript体验异步更好的解决办法
Jan 08 Javascript
详解Vue微信授权登录前后端分离较为优雅的解决方案
Jun 29 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和ACCESS写聊天室(四)
2006/10/09 PHP
php Undefined index的问题
2009/06/01 PHP
PHP中使用Memache作为进程锁的操作类分享
2015/03/30 PHP
Thinkphp框架 表单自动验证登录注册 ajax自动验证登录注册
2016/12/27 PHP
PHP+MySQL实现模糊查询员工信息功能示例
2018/06/01 PHP
PHP Swoole异步MySQL客户端实现方法示例
2019/10/24 PHP
js控制淡入淡出示例代码
2013/11/12 Javascript
JavaScript中使用typeof运算符需要注意的几个坑
2014/11/08 Javascript
js对象基础实例分析
2015/01/13 Javascript
DOM 事件流详解
2015/01/20 Javascript
Javascript中call和apply函数的比较和使用实例
2015/02/03 Javascript
Jquery搜索父元素操作方法
2015/02/10 Javascript
js时间戳转为日期格式的方法
2015/12/28 Javascript
漂亮! js实现颜色渐变效果
2016/08/12 Javascript
Ajax实现不刷新取最新商品
2017/03/01 Javascript
深入浅析javascript函数中with
2018/10/28 Javascript
js中this的指向问题归纳总结
2018/11/28 Javascript
qrcode生成二维码微信长按无法识别问题的解决
2019/04/04 Javascript
说说如何使用Vuex进行状态管理(小结)
2019/04/14 Javascript
bootstrap-table formatter 使用vue组件的方法
2019/05/09 Javascript
微信小程序-可移动菜单的实现过程详解
2019/06/24 Javascript
Python自动化测试Eclipse+Pydev 搭建开发环境
2016/08/15 Python
Python+Django搭建自己的blog网站
2018/03/13 Python
Python网络编程基于多线程实现多用户全双工聊天功能示例
2018/04/10 Python
对python过滤器和lambda函数的用法详解
2019/01/21 Python
详解用pyecharts Geo实现动态数据热力图城市找不到问题解决
2019/06/26 Python
Python pandas库中的isnull()详解
2019/12/26 Python
澳大利亚领先的美容护肤品零售商之一:SkincareStore
2018/01/22 全球购物
幼师岗位求职简历的自荐信格式
2013/09/21 职场文书
综合内勤岗位职责
2014/04/14 职场文书
银行竞聘演讲稿范文
2014/04/23 职场文书
特教教师先进事迹
2014/05/21 职场文书
美食节目策划方案
2014/05/31 职场文书
微电影大赛策划方案
2014/06/05 职场文书
设计师求职信
2014/07/01 职场文书
社区党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书