在输入数据之前不显示带有角度 ui-select 的下拉选项?



我正在使用angular ui select指令来创建一个自动完成的输入字段。我希望能够在不显示下拉选项的情况下单击并聚焦字段。文档中的Plunker示例是这样工作的,但我无法使我的示例正确运行。请帮忙。

这是我的代码:

<ui-select ng-model="customer.selected" theme="bootstrap">
<ui-select-match placeholder="Start typing..">{{ $select.selected.family_name }}</ui-select-match>
<ui-select-choices repeat="customer in customers | filter: $select.search">
<div ng-bind-html="trustAsHtml((customer.family_name | highlight: $select.search))"></div>
</ui-select-choices>
</ui-select>

这是他们的Plunker的例子,它正在以我希望的方式工作。

http://plnkr.co/edit/a3KlK8dKH3wwiiksDSn2?p=preview

我也有同样的问题。我希望能够在不显示下拉选项的情况下单击并聚焦字段。

我在这里分享我的解决方案。也许它会帮助别人。我在@Corey Quillen共享的plunker中对Selectize theme示例进行了更改。我已经清理了其他东西,所以这会有所帮助。

1) 首先,我在ui-select指令中添加了reset-search-input="false"。因此它不会重置搜索输入。

2) 然后我用自定义过滤器propsFilter替换了filter。已在Select2 theme中使用。并放置

if(!props.name.length){ return out; }

在CCD_ 9以上的滤波器中。在demo.js文件中。

因此,如果未输入搜索文本,则数据返回为空。

这是一个很好的例子。

ui select默认情况下显示下拉列表,我认为我们无法更改。但您可以更改其绑定数据。在plunker示例中,ui select绑定到模型"address.selected",该模型最初为空,因此不会弹出任何内容。但是,一旦您开始键入refresh,就会调用函数refreshAddress()将结果填充到地址中。一旦填充了结果,ui select就会发现它的模型(地址)有数据,并开始显示下拉列表。在你搜索了一些东西之后,试着点击文本框,它仍然会向你显示结果,因为它们仍然存在于模型中。

因为,我想你是用一个局部变量来尝试它的,它预先填充了ui select的数据,因此它显示了它。我认为你应该尝试在代码中发出请求来获取数据,并使用刷新和刷新延迟。如果你没有web服务,并且想使用本地数据,我建议你将select绑定到一个空模型,并使用自定义函数将数据放入其中进行刷新,你可能需要在刷新函数中写入自定义搜索功能,但你可以使用javascript的search()或indexOf()。

最新更新