详解使用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_15_作用域分配与变量访问规则,再送个闭包
Oct 20 Javascript
用于节点操作的API,颠覆原生操作HTML DOM节点的API
Dec 11 Javascript
javascript写的日历类(基于pj)
Dec 28 Javascript
node.js中的console.info方法使用说明
Dec 09 Javascript
js实现下拉列表选中某个值的方法(3种方法)
Dec 17 Javascript
js实现页面跳转的几种方法小结
May 16 Javascript
Javascript基础学习笔记(菜鸟必看篇)
Jul 22 Javascript
Angularjs 自定义服务的三种方式(推荐)
Aug 02 Javascript
JavaScript中函数声明与函数表达式的区别详解
Aug 18 Javascript
ie下js不执行的几种可能
Feb 28 Javascript
Vue实现导航栏点击当前标签变色功能
Aug 19 Javascript
Vue 实现复制功能,不需要任何结构内容直接复制方式
Nov 09 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
IIS7.X配置PHP运行环境小结
2011/06/09 PHP
PHP表单提交表单名称含有点号(.)则会被转化为下划线(_)
2011/12/14 PHP
深入Memcache的Session数据的多服务器共享详解
2013/06/13 PHP
php fseek函数读取大文件两种方法
2016/10/12 PHP
Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
2017/10/11 PHP
js内存泄露的几种情况详细探讨
2013/05/31 Javascript
jquery 为a标签绑定click事件示例代码
2014/06/23 Javascript
解决Jquery向页面append新元素之后事件的绑定问题
2015/03/16 Javascript
纯js模拟div层弹性运动的方法
2015/07/27 Javascript
jquery实现华丽的可折角广告代码
2015/09/02 Javascript
jQuery判断元素是否显示 是否隐藏的简单实现代码
2016/05/19 Javascript
JQuery点击行tr实现checkBox选中的简单实例
2016/05/26 Javascript
javascript数组去重方法分析
2016/12/15 Javascript
jQuery实现文字自动横移
2017/01/08 Javascript
vue单页面打包文件大?首次加载慢?nginx带你飞,从7.5M到1.3M蜕变过程(推荐)
2018/01/16 Javascript
vue2.0 elementUI制作面包屑导航栏
2018/02/22 Javascript
Angularjs Promise实例详解
2018/03/15 Javascript
jQuery插件实现弹性运动完整示例
2018/07/07 jQuery
微信小程序实现日历功能
2018/11/27 Javascript
JavaScript之实现一个简单的Vue示例
2019/01/17 Javascript
如何手写一个简易的 Vuex
2020/10/10 Javascript
Python 不同对象比较大小示例探讨
2014/08/21 Python
Python __setattr__、 __getattr__、 __delattr__、__call__用法示例
2015/03/06 Python
Python实现KNN邻近算法
2021/01/28 Python
python中使用print输出中文的方法
2018/07/16 Python
python进行文件对比的方法
2018/12/24 Python
基于 HTML5 WebGL 实现的医疗物流系统
2019/10/08 HTML / CSS
亚洲最大的运动鞋寄售店:KicksCrew
2020/11/26 全球购物
运动会解说词200字
2014/02/06 职场文书
党员教师四风问题对照检查材料
2014/09/26 职场文书
酒店人事专员岗位职责
2015/04/07 职场文书
七年级之家长会发言稿范文
2019/09/04 职场文书
IDEA2021.2配置docker如何将springboot项目打成镜像一键发布部署
2021/09/25 Java/Android
关于PHP数组迭代器的使用方法实例
2021/11/17 PHP
MySQL中B树索引和B+树索引的区别详解
2022/03/03 MySQL