我有一个可搜索的下拉列表,包含许多值。我正在使用ui-select
来过滤用户输入的值。我不希望一次显示超过30个值。但是,我想告知用户,如果用户继续编写/过滤,则有更多可用数据。你会如何解决这个问题?
我的想法是以某种方式在列表中添加一个额外的禁用元素,如果有超过30个项目,则会读取'More results...'
之类的内容。有没有办法为ui-select
提供一个不过滤的常量选择?
如果滚动下拉列表,那么很明显有更多数据,但没有显示。
<ui-select ng-model="vm.selectedOption" close-on-select="true" on-select="vm.optionSelected($item)" spinner-enabled="true">
<ui-select-match placeholder="{{'Select option'}}">
<span ng-bind="$select.selected.name"></span>
</ui-select-match>
<ui-select-choices
repeat="option in vm.options"
refresh="vm.loadOptions($select.search)"
refresh-delay="200"
ui-disable-choice="option.isConstantChoice=== true"
>
<div ng-bind-html="option.name | highlight: $select.search"></div>
</ui-select-choices>
</ui-select>
答案 0 :(得分:0)
在您用于生成的数组中添加额外元素,或者更好的解决方案是将实际数据与UI分开,并将该元素附加到以下内容:
var html='<div ng-if="' + expressionForShowingelement + '">Value</div>',
el = document.getElementById('targetelementId');
angular.element(el).append( $compile(html)($scope) )
然后原始源保持不变,UI与数据/逻辑分离。 注意不要混合单引号和双引号并打破HTML。
请勿忘记稍后使用id
设置append()
,并禁用该元素进行选择。
另外,请记住,如果您在AngularJS活动之外做出回应,则需要拨打$apply
。