如何为ui-select提供一个恒定的选择?

时间:2018-05-25 12:33:58

标签: angularjs ui-select

我有一个可搜索的下拉列表,包含许多值。我正在使用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>

1 个答案:

答案 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