如何获取在ui-select搜索框中输入的值?

时间:2015-10-07 12:08:42

标签: angularjs ui-select

我正在使用ui-select(https://github.com/telepat-io/telepat-android-sdk)。

ui-select支持我们搜索,选择和多选。但是,如何在ui-select搜索框中输入用户输入的值?如果用户键入的值不正确,我想显示错误消息。

示例:在下面这个带有Select2主题的plunker中,当用户输入:' asdasd' (此文字与任何结果不匹配)时,我想显示一条消息"找不到任何结果!" 分配给&#;; scope.person.selected'

plnkr.co/edit/a3KlK8dKH3wwiiksDSn2?p=preview

我该怎么做?

非常感谢!

6 个答案:

答案 0 :(得分:3)

您可以使用ng-keypress="fn($select.search)" at <ui-select...>
并在控制器上使用此功能来获取输入。

$scope.fn = function(search) {
//do something with search
}

答案 1 :(得分:3)

angular_ui_select中的输入数据进入$select.search model。 您可以使用ui-select-choice的刷新属性。 只需传递refresh="test($select.search)"中的函数,并分别使用refresh-delayminimum-input-length属性设置延迟和最小输入长度。 这是一个简单的例子:

<ui-select ng-model="model" theme="theme">
     <ui-select-match>{{data}}</ui-select-match>
     <ui-select-choices repeat="options in data" refresh="yourFunction($select.search)" refresh-delay="100" minimum-input-length="1"></ui-select-choices>      
</ui-select>

我建议你阅读文档,希望它会有所帮助。 angular-ui-select

答案 2 :(得分:1)

如果我们使用$ select.search来获得期望结果,我们必须再次循环搜索。到目前为止,版本大于0.17.1,我们可以使用最简单的解决方案:使用ui-select-no-choice

https://github.com/angular-ui/ui-select/wiki/ui-select-no-choice

非常感谢你的支持!

答案 3 :(得分:0)

您也可以在ng-init="setSelect($select)"

使用<ui-select...>

答案 4 :(得分:0)

您可以通过创建自定义过滤器来执行此操作。如在这个例子中; 'uppercasetr'是自定义过滤器。

<ui-select ng-model="vm.mc" theme="select2" limit="10">
    <ui-select-match placeholder="Country...">{{$select.selected.SectionTitle}}</ui-select-match>
    <ui-select-choices repeat="item in vm.data | propsFilter:{SectionTitle : ($select.search | uppercasetr)} | limitTo:$select.limit">
        <div ng-bind-html="(item.SectionTitle) | highlight: $select.search"></div>
        <small>
            <b>Country:</b> {{item.SectionValue1}}
       </small>
    </ui-select-choices>
</ui-select>

答案 5 :(得分:-1)

你可以使用angular-ui-bootstraps的typeahead,用于相同的目的。这是pluncker链接http://plnkr.co/edit/gsJzdTZHiXZ6MrtTe4F3?p=preview

HTML:

<div class='container-fluid typeahead-demo' ng-controller="TypeaheadCtrl">
    <pre>Model: {{asyncSelected | json}}</pre>
    <input type="text" ng-model="asyncSelected" placeholder="Locations loaded via $http" uib-typeahead="address for address in getLocation($viewValue)" typeahead-loading="loadingLocations" typeahead-no-results="noResults" class="form-control">
    <i ng-show="loadingLocations" class="glyphicon glyphicon-refresh"></i>
    <div ng-show="noResults">
      <i class="glyphicon glyphicon-remove"></i> No Results Found
    </div>
</div>