如何将第一个选择选项设置为始终为空
How to set the first select option to always be blank
我在一个项目中使用angularjs,并且在其中使用ng-options来生成
最初,当页面重新加载并且没有选择任何选项元素时,生成的 HTML 如下所示:
<select size="3" ng-model="item" ng-options="s.name for s in itemlist">
<option value="?" selected="selected"></option>
<option value="0">Item 1</option>
<option value="1">Item 2</option>
<option value="2">Item 3</option>
</select>
但是当我选择一个元素(例如第 2 项)时,第一个空白选择就消失了。我知道它发生在 ng 模型由选择值设置时。但是我希望首先选择始终为空,以便用户可以重置过滤器。
这将为您完成工作:
<select size="3" ng-model="item" ng-options="s.name for s in itemlist">
<option value="">Select Option</option>
</select>
对于将"null"视为其中一个选项的有效值的任何人(因此,假设"null"是以下示例中typeOptions中某个项目的值),我发现确保自动添加的选项隐藏的最简单方法是使用ng-if。
<select ng-options="option.value as option.name for option in typeOptions">
<option value="" ng-if="false"></option>
</select>
为什么是ng-if而不是ng-hide?因为您希望 css 选择器将针对上面的第一个选项,选择以定位"真实"选项,而不是隐藏的选项。当您使用量角器进行 e2e 测试并且(无论出于何种原因)使用 by.css() 来定位选择选项时,它会很有用。
凯文 - 苏佬
您可以放弃使用ng-options
,改用ng-repeat
,并将第一个选项设为空白。 请参阅下面的示例。
<select size="3" ng-model="item">
<option value="?" selected="selected"></option>
<option ng-repeat="s in itemlist" value="{{s.value}}">{{s.name}}</option>
</select>
看来最好的选择是将空白项目作为项列表中的第一个项包含在内。
上面的解决方案将使用垃圾数据损坏模型。请使用指令以正确的方式重置模型 .JS: 选择选项
Directive"
.directive('dropDown', function($filter) {
return {
require: 'ngModel',
priority: 100,
link: function(scope, element, attr, ngModel) {
function parse(value) {
if (value) {
if(value === "")
{
return "crap"
}
else
{
return value;
}
} else {
return;
}
}
ngModel.$parsers.push(parse);
}
};
});
我遇到了同样的问题,经过大量的谷歌搜索,我明白主要问题与我的角度版本有关,如果你使用 Angular 1.6.x,只需使用 ng-value 指令,它将按预期工作。
我还在我的控制器中设置了一个初始值,如下所示:
$scope.item = 0;
<select ng-model="dataItem.platform_id"
ng-options="item.id as item.value for item in platformList"
ng-init="dataItem.platform_id=dataItem.platform_id||platformList[0].id"></select>
控制器
$scope.item = '';
$scope.itemlist = {
'' = '',
'Item 0' = 1,
'Item 1' = 2,
'Item 2' = 3
};
.HTML
<select data-ng-model="item" data-ng-options="v as k for (k, v) in itemlist"></select>
相关文章:
- 设置选项对象关键点:值对以实现带第二个y轴的动态打印
- Grunt为任务设置选项,并使用新值运行该任务
- 无法在 IE 中设置选项元素的属性
- 使用设置选项时未引用高图表错误
- 使用多维数组使用 ng-option 设置选项的值和文本
- 如何设置选项选择的值
- 在 React-Leaflet 库中为
- 如何使用 AngularJS 从控制器
的 中设置选项值 - 基于数据属性的选择下拉列表中的设置选项
- 如何在 JSHint 中设置选项列表
- SenchaTouch2 - 侦听商店加载事件,设置选项卡面板项“徽章文本”
- 根据 if / else 语句修改设置“选项”值
- 如何设置选项以选择框
- 在角度模态打开后设置选项
- 使用 jQuery 设置选项值以外的默认值
- 在 jade 筛选器中使用区域设置选项失败
- xml2js:无法在 parseString() 函数中设置选项
- 设置选项接受一个数字变量,拒绝另一个数字变量
- jQuery UI选项卡,设置选项卡被动和主动
- 谷歌地图多边形在设置选项后不更新颜色