javascript - 已选择 Angular 空白选项

标签 javascript angularjs select angularjs-ng-repeat html-select

我正在用头撞墙。

我有一个对象数组,将用于填充选择下拉列表:

CardCount = [{"ClientId": "0010", "Description": "0010 (206 Members)"}, {"ClientId": "0051", "Description": "0051 (1 Member)"}, ........]

当我尝试使用 ng-options 时,选项的值设置为索引,而不是所需的 ClientId。为了使每个选项中的值成为 ClientId,我必须在选项中使用 ng-repeat。这是我的 html:

<select ng-model="CurrentClient">
    <option ng-repeat="item in CardCount" value="{{item.ClientId}}">{{item.Description}}</option>
</select>

最初,一切都很好,选择和选项都正确生成,并且第一个选项是正确的。现在,当单击页面上其他位置的某个按钮时,有必要使用较小的类似对象数组重新创建此选择和选项。但是,这样做会创建一个值为“? string:0010 ?”的空白选项。这是选定的选项。同样,我无法使用 ng-options 来纠正此问题,因为这样做不会正确设置选项标记中的 value 属性。因此,我将其添加到选项标签中:

<option ng-repeat="item in CardCount" value="{{item.ClientId}}" ng-selected="CurrentClient == item.ClientId">{{item.Description}}</option>

现在,这确实将正确的选项标记为已选择。但是,下拉菜单仍然显示空白选项。这是渲染的 html:

<select ng-model="CurrentClient">
    <option value="? string:0010 ?"></option>
    <option value="0010" selected="selected">0010 (206 Members)</option>
</select>

如您所见,它将正确的选项设置为已选择。但是,它将其设置为 selected="selected",而不仅仅是 selected。当我检查元素并将 selected="selected" 更改为 selected (删除等于及其后面的所有内容)时,下拉菜单将正确显示正确选择的选项。

同样,最初选择和选项效果很好。该问题似乎仅在创建选择的数组更改后才会发生。更改数组后,如何才能使此选择和选项正常工作,并且不显示第一个空白选项?

谢谢!

最佳答案

将选项元素更改为默认设置值。

<option ng-repeat="item in CardCount track by item.ClientId" 
value="{{item.ClientId}}">{{item.Description}}</option>

希望这可以帮助你。谢谢。

关于javascript - 已选择 Angular 空白选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28284758/

相关文章:

javascript - 动态生成的按钮中未触发事件

javascript - 在javascript dom中,如何获取当前窗口的目标?

javascript - React Context API,从子组件设置上下文状态而不是将函数作为 Prop 传递

angularjs - 如何将自定义数据从 ui-router 中的 View 传递到状态?

mysql - 如何使用where子句获取mysql中选定行的总和?

javascript - 在 Javascript 中循环创建 (xml) 字符串

javascript - 根据第一个 View 的选择更新其他 View ?

mysql - 将日期和时间格式化为 MySQL 默认格式

.net - NPGSQL:从 Postgres 查询流式传输结果?

AngularJS ng-required 只允许空格