详解使用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 相关文章推荐
Prototype String对象 学习
Jul 19 Javascript
JavaScript 编写匿名函数的几种方法
Feb 21 Javascript
jQuery帮助之筛选查找 children([expr])
Jan 31 Javascript
图片在浏览器中底部对齐 解决方法之一
Nov 30 Javascript
一个JavaScript用逗号分割字符串实例
Sep 22 Javascript
javascript Deferred和递归次数限制实例
Oct 21 Javascript
常用的Javascript数据验证插件
Aug 04 Javascript
微信小程序 WXDropDownMenu组件详解及实例代码
Oct 24 Javascript
JS判断非空至少输入两个字符的简单实现方法
Jun 23 Javascript
基于JS对象创建常用方式及原理分析
Jun 28 Javascript
vue基于viewer实现的图片查看器功能
Apr 12 Javascript
Vue封装全局过滤器Filters的步骤
Sep 16 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开发中四种查询返回结果分析
2011/01/02 PHP
php中全局变量global的使用演示代码
2011/05/18 PHP
PHP中round()函数对浮点数进行四舍五入的方法
2014/11/19 PHP
PHP并发查询MySQL的实例代码
2017/08/09 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
麦鸡的TAB切换功能结合了javascript和css
2007/12/17 Javascript
JQuery打造省市下拉框联动效果
2014/05/18 Javascript
解读Bootstrap v4 sass设计
2016/05/29 Javascript
微信小程序 基础组件与导航组件详细介绍
2017/02/21 Javascript
微信小程序本地缓存数据增删改查实例详解
2017/05/24 Javascript
jquery加载单文件vue组件的方法
2017/06/20 jQuery
微信JS SDK接入的几点注意事项(必看篇)
2017/06/23 Javascript
CKEditor 4.4.1 添加代码高亮显示插件功能教程【使用官方推荐Code Snippet插件】
2019/06/14 Javascript
微信小程序用户授权弹窗 拒绝时引导用户重新授权实现
2019/07/29 Javascript
JavaScript实现与web通信的方法详解
2020/08/07 Javascript
Element-ui 自带的两种远程搜索(模糊查询)用法讲解
2021/01/29 Javascript
python dict.get()和dict['key']的区别详解
2016/06/30 Python
python生成二维码的实例详解
2017/10/29 Python
利用python将图片版PDF转文字版PDF
2019/05/03 Python
jupyter lab的目录调整及设置默认浏览器为chrome的方法
2020/04/10 Python
浅谈keras使用中val_acc和acc值不同步的思考
2020/06/18 Python
解决Django响应JsonResponse返回json格式数据报错问题
2020/08/09 Python
python实现sm2和sm4国密(国家商用密码)算法的示例
2020/09/26 Python
CSS3之2D与3D变换的实现方法
2019/01/28 HTML / CSS
意大利网上购书网站:Libraccio.it
2021/02/03 全球购物
总经理秘书工作职责
2013/12/26 职场文书
开会迟到检讨书
2014/02/03 职场文书
运动会入场词60字
2014/02/15 职场文书
计算机大学生职业生涯规划书范文
2014/02/19 职场文书
村党建工作汇报材料
2014/11/02 职场文书
2014年工会工作总结
2014/11/12 职场文书
2015年全国科普日活动总结
2015/03/23 职场文书
2015年第十五个全民国防教育日宣传活动方案
2015/05/06 职场文书
2016年大学迎新晚会工作总结
2015/10/15 职场文书
2019个人工作总结
2019/06/21 职场文书
详解Python函数print用法
2021/06/18 Python