【发布时间】:2015-03-04 16:13:46
【问题描述】:
这似乎是我正在寻找的一件非常简单的事情,而且我在 SO 或其他任何地方都找不到任何东西,这让我觉得我一定错过了一些非常明显的东西,但到目前为止我很难过。我的问题是;有没有什么办法,当使用 ng-options 设置的选择框时,将列表设置为无选择(即 selectedIndex = -1)?我有一个选择框设置为非下拉菜单,我希望能够显示未选择任何内容的列表。
我正在添加我在下面使用的代码,但我相信这是非常标准的东西。 curSearchResults 数组是从服务器填充的。我不包括这里,因为它工作正常。我尝试在获取列表后将 selSearchRslt 设置为 null 并返回到新的 searchRslt() ,但两者都在列表顶部留下了一个空白选项。我已经习惯了根据需要将选择框设置为无选择非常简单......
在控制器处:
function searchRslt() {
this.RsltId = '';
this.RsltName = '';
}
$scope.curSearchRslts = [];
$scope.selSearchRslt = new searchRslt();
在标记中:
<select class="listPanel"
ng-model="selSearchRslt"
ng-options="rslt as rslt.RsltName for rslt in curSearchRslts"
ng-change="loadSearchRslt()"
size="40" style="height: 300px; width: 480px">
</select>
这是对以下cmets的回应:
我阅读了您提到的问题,并且确实在文档中看到了有关向标记添加选项的内容,但这与将所选索引设置为 -1 的结果不同。相反,它在我的列表中添加了一个未使用的选项。特别是当列表不显示为下拉列表时,我发现这个解决方案在 UI 方面非常笨拙。我不想要那个额外的选择。我只想要我实际要使用的选项,但没有选择。如果答案是我不能这样做,那很好,但是添加一个未使用的选项肯定与将 selectedIndex 设置为 -1 不同。
此外,我不是在寻找设置默认选项的方法,而是在寻找不选择任何选项的方法。我不明白这如何被视为同一件事。我发现设置默认选择非常容易。我永远不会发布有关此的问题。我还没有找到任何提供没有选择的方法。如果我在这里遗漏了什么并且已经完全脑死亡,请接受我的道歉,但我看不出所提到的问题是如何回答这个问题的。
【问题讨论】:
-
你看这个问题了吗。 stackoverflow.com/questions/18194255/… 还有很多其他的。您需要做的就是在选择中添加一个选项
-
Angular 文档docs.angularjs.org/api/ng/directive/select 中明确回答了这个问题。请参阅在
-
我的问题似乎被踢到了路边,因为它被标记为重复,这很遗憾,因为没有人回复我的编辑说明为什么我认为这是错误的。我得出的结论是,您不能将 ng-options 绑定选择列表设置为无选择,我认为这是 Angularjs 中的一个缺失(否则我很喜欢)。就我而言,添加空白(或--请选择--)选项是一种解决方案,但实际上并不能解决问题。也许需要一个 ng-noSelection 指令或类似的东西。
标签: javascript angularjs select selectedindex angularjs-ng-options