详解使用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 相关文章推荐
广告代码静态化js通用函数
May 09 Javascript
利用JS自动打开页面上链接的实现代码
Sep 25 Javascript
javascript中有趣的反柯里化深入分析
Dec 05 Javascript
$(document).ready(function() {})不执行初始化脚本
Jun 19 Javascript
javascript history对象详解
Feb 09 Javascript
浅谈js中用$(#ID)来作为选择器的问题(id重复的时候)
Feb 14 Javascript
JavaScript 数据类型详解
Mar 13 Javascript
selenium 与 chrome 进行qq登录并发邮件操作实例详解
Apr 06 Javascript
web前端开发中常见的多列布局解决方案整理(一定要看)
Oct 15 Javascript
使用Vue完成一个简单的todolist的方法
Dec 01 Javascript
JS实现用特殊符号替换字符串的中间部分区域的实例代码
Jul 24 Javascript
JS实现盒子跟着鼠标移动及键盘方向键控制盒子移动效果示例
Jan 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 出现乱码和Sessions验证问题的解决方法!
2008/12/06 PHP
php UBB 解析实现代码
2011/11/27 PHP
Javascript 获取LI里的内容
2008/12/17 Javascript
jQuery 技巧小结
2010/04/02 Javascript
html页面显示年月日时分秒和星期几的两种方式
2013/08/20 Javascript
JS获取计算机mac地址以及IP的实现方法
2014/01/08 Javascript
JavaScript插件化开发教程 (二)
2015/01/27 Javascript
angularJS 中input示例分享
2015/02/09 Javascript
利用JavaScript的AngularJS库制作电子名片的方法
2015/06/18 Javascript
详解JavaScript ES6中的模板字符串
2015/07/28 Javascript
swtich/if...else的替代语句
2015/08/16 Javascript
使用JavaScript获取URL中的参数(两种方法)
2016/11/16 Javascript
基于javascript实现按圆形排列DIV元素(二)
2016/12/02 Javascript
jQuery is not defined 错误原因与解决方法小结
2017/03/19 Javascript
JS jQuery使用正则表达式去空字符的简单实现代码
2017/05/20 jQuery
详解Node中导入模块require和import的区别
2017/08/11 Javascript
js canvas画布实现高斯模糊效果
2018/11/27 Javascript
Python引用(import)文件夹下的py文件的方法
2014/08/26 Python
Python数据结构之顺序表的实现代码示例
2017/11/15 Python
Python3多线程操作简单示例
2018/05/22 Python
Python(TensorFlow框架)实现手写数字识别系统的方法
2018/05/29 Python
解决Python pandas plot输出图形中显示中文乱码问题
2018/12/12 Python
python中树与树的表示知识点总结
2019/09/14 Python
python 队列基本定义与使用方法【初始化、赋值、判断等】
2019/10/24 Python
python单例模式原理与创建方法实例分析
2019/10/26 Python
python opencv图片编码为h264文件的实例
2019/12/12 Python
联想印度官方网上商店:Lenovo India
2019/08/24 全球购物
入党思想汇报怎么写
2014/04/03 职场文书
镇政府副镇长群众路线专题民主生活会对照检查材料
2014/09/19 职场文书
县委常委班子对照检查材料思想汇报
2014/09/28 职场文书
干部考察材料范文
2014/12/24 职场文书
农村房屋租赁合同(范本)
2019/07/23 职场文书
个人工作总结(管理人员)范文
2019/08/13 职场文书
Django如何与Ajax交互
2021/04/29 Python
PyTorch的Debug指南
2021/05/07 Python
Java8中接口的新特性使用指南
2021/11/01 Java/Android