将默认值设置为 AngularJs select,这在 ng-options 中不存在
Setting a default value to AngularJs select which doesn't exist in ng-options
在 AngularJs <select>
中填充选项时,将添加一个额外的默认值 <option>
,直到选择了一个值。
例如:
<select
ng-model="select1"
ng-options="title as title for title in ['Option 1', 'Option 2', 'Option 3']">
</select>
生成以下 HTML 标记:
<select ng-model="select1" ng-options="title as title for title in ['Option 1', 'Option 2', 'Option 3']" class="ng-pristine ng-valid ng-empty ng-touched">
<option value="?" selected="selected"></option>
<option label="Option 1" value="string:Option 1">Option 1</option>
<option label="Option 2" value="string:Option 2">Option 2</option>
<option label="Option 3" value="string:Option 3">Option 3</option>
</select>
一旦选择了一个选项,例如 "Option 1",那么初始的 <option>
元素将被删除:
<select ng-model="select1" ng-options="title as title for title in ['Option 1', 'Option 2', 'Option 3']" class="ng-valid ng-touched ng-not-empty ng-dirty ng-valid-parse">
<option label="Option 1" value="string:Option 1">Option 1</option>
<option label="Option 2" value="string:Option 2">Option 2</option>
<option label="Option 3" value="string:Option 3">Option 3</option>
</select>
但是我想添加一个默认值 "Please Select",一旦选择了一个值,它也会被删除 。
如果我将 <select>
设置为:
<select
ng-model="select1"
ng-options="title as title for title in ['Option 1', 'Option 2', 'Option 3']">
<option value="">Please Select</option>
</select>
一旦选择了一个值,该值就不会被删除。
我也试过将 value
设置为 ?
,但是没有显示该选项。
这是一个 JsFiddle 示例来说明我的问题:https://jsfiddle.net/rq2cgedm/
如何在 <select>
元素中显示默认值,一旦选择了有效选项,该元素就会被删除,就像默认的 AngularJs 行为一样?
我建议您在选项中使用 ng-repeat
而不是 ng-option
。
这将允许您保留原始默认值。
<select ng-model="select1">
<option ng-value="" >default</option>
<option ng-repeat="option in ['Option 1', 'Option 2', 'Option 3'] track by $index" ng-value="string:option">{{option}}</option>
</select>
虽然不确定这是否是您的意思
我试过你的fiddle,你可以通过添加一个禁用和隐藏的选项来解决这个问题,但也设置为默认值。
这导致选项未显示在下拉列表中以供选择,但仍将值显示为默认值。这似乎是您想要实现的目标。
例如:
<select ng-model="select2" ng-options="title as title for title in ['Option 1', 'Option 2', 'Option 3']">
<option value="" disabled selected style="display: none;">Please Select</option>
</select>
我也有updated your fiddle来演示。
在 AngularJs <select>
中填充选项时,将添加一个额外的默认值 <option>
,直到选择了一个值。
例如:
<select
ng-model="select1"
ng-options="title as title for title in ['Option 1', 'Option 2', 'Option 3']">
</select>
生成以下 HTML 标记:
<select ng-model="select1" ng-options="title as title for title in ['Option 1', 'Option 2', 'Option 3']" class="ng-pristine ng-valid ng-empty ng-touched">
<option value="?" selected="selected"></option>
<option label="Option 1" value="string:Option 1">Option 1</option>
<option label="Option 2" value="string:Option 2">Option 2</option>
<option label="Option 3" value="string:Option 3">Option 3</option>
</select>
一旦选择了一个选项,例如 "Option 1",那么初始的 <option>
元素将被删除:
<select ng-model="select1" ng-options="title as title for title in ['Option 1', 'Option 2', 'Option 3']" class="ng-valid ng-touched ng-not-empty ng-dirty ng-valid-parse">
<option label="Option 1" value="string:Option 1">Option 1</option>
<option label="Option 2" value="string:Option 2">Option 2</option>
<option label="Option 3" value="string:Option 3">Option 3</option>
</select>
但是我想添加一个默认值 "Please Select",一旦选择了一个值,它也会被删除 。
如果我将 <select>
设置为:
<select
ng-model="select1"
ng-options="title as title for title in ['Option 1', 'Option 2', 'Option 3']">
<option value="">Please Select</option>
</select>
一旦选择了一个值,该值就不会被删除。
我也试过将 value
设置为 ?
,但是没有显示该选项。
这是一个 JsFiddle 示例来说明我的问题:https://jsfiddle.net/rq2cgedm/
如何在 <select>
元素中显示默认值,一旦选择了有效选项,该元素就会被删除,就像默认的 AngularJs 行为一样?
我建议您在选项中使用 ng-repeat
而不是 ng-option
。
这将允许您保留原始默认值。
<select ng-model="select1">
<option ng-value="" >default</option>
<option ng-repeat="option in ['Option 1', 'Option 2', 'Option 3'] track by $index" ng-value="string:option">{{option}}</option>
</select>
虽然不确定这是否是您的意思
我试过你的fiddle,你可以通过添加一个禁用和隐藏的选项来解决这个问题,但也设置为默认值。
这导致选项未显示在下拉列表中以供选择,但仍将值显示为默认值。这似乎是您想要实现的目标。
例如:
<select ng-model="select2" ng-options="title as title for title in ['Option 1', 'Option 2', 'Option 3']">
<option value="" disabled selected style="display: none;">Please Select</option>
</select>
我也有updated your fiddle来演示。