AngularJS中ng-options渲染的第一项为空问题分析及解决方案

举报
SHQ5785 发表于 2024/02/25 14:32:09 2024/02/25
【摘要】 一、问题描述在使用ng-options时,如果首次使用,可能会在渲染完成后发现下拉列表的第一项为空,并且在选择一项之后,为空的第一项已经消失了,这样用户体验上来说很不好。 二、原因剖析使用ng-options的时候,是配合模型指令ng-model一起使用的,从而我们就可以知道,渲染生成的第一项为空原因肯定和ng-model的初始值有关系。 三、解决办法可以在控制器中给ng-model的初始...

一、问题描述

在使用ng-options时,如果首次使用,可能会在渲染完成后发现下拉列表的第一项为空,并且在选择一项之后,为空的第一项已经消失了,这样用户体验上来说很不好。

二、原因剖析

使用ng-options的时候,是配合模型指令ng-model一起使用的,从而我们就可以知道,渲染生成的第一项为空原因肯定和ng-model的初始值有关系。

三、解决办法

  • 可以在控制器中给ng-model的初始值设置为下拉选项中的某个值或对象;
  • 可以给select默认增加一项类似“请选择”的选项。

四、示例

控制器

var instsData ={
		"result":"0000",
		"errtext":"",
		"data":[
			{"instName":"中国银行","instCode":"000996"},
			{"instName":"中国西电","instCode":"601179"},
			{"instName":"中国重汽","instCode":"000951"}
		]};
var results = instsData.data;
$scope.inst = results[0];
$scope.insts = results;
<select id="selectInput" style="display:none"
	ng-model="inst"
	ng-options="inst.instCode as inst.instName for inst in insts" ng-change="doChange()">
	<option value="">----请选择----</option>
</select>

五、延伸阅读

HTML:让表单、文本框只读,不可编辑的方法
有时候,我们希望表单中的文本框是只读的,让用户不能修改其中的信息,如使<input type="text" name="input1" value="中国"> 的内容,"中国"两个字不可以修改。实现的方式归纳一下,有如下几种。

方法1: onfocus=this.blur()
<input type="text" name="input1" value="中国" onfocus=this.blur()>

方法2:readonly
<input type="text" name="input1" value="中国" readonly>

<input type="text" name="input1" value="中国" readonly="true">

方法3: disabled
<input type="text" name="input1" value="中国" disabled>

很简单,但有时候很有用!

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。