angularjs ui-select-choices下拉aphabetical顺序取决于给定的输入

时间:2016-08-17 17:39:21

标签: javascript jquery angularjs angular-ui angular-ui-select

我正在使用https://github.com/angular-ui/ui-select作为我正在处理的网站。目前代码如下:

       <ui-select ng-model="model.states">
         <ui-select-match placeholder="State">
           {{$item.Name}}
         </ui-select-match>
         <ui-select-choices repeat="item.Code as item in statesArray | filter:$select.search">
            {{item.Name}}
         </ui-select-choices>
      </ui-select>

当我在输入字段中输入任何内容时,例如&#34; a&#34;,ui-select-choices显示包含&#34; a&#34;的所有字段。 (默认情况下)。我想要做的是,我想要显示所有以&#34; a&#34;开头的状态。只要。如果输入框中未输入任何内容,则按字母顺序显示所有字段。有人可以提出解决方案吗?我看过其他一些帖子,但还没有人回答这个问题。提前谢谢。

实施例

以下是一个例子,假设州阵列有像加利福尼亚州,康涅狄格州,阿拉斯加州,亚利桑那州,纽约州等州。

如果输入字段中没有输入任何内容,则下拉列表应显示阿拉斯加州,亚利桑那州,加利福尼亚州,康涅狄格州,纽约州(可以使用orderBy过滤器实现)。

如果用户输入&#34; a&#34;在输入字段中,下拉列表应显示亚利桑那州,亚利桑那州,而阿拉斯加州和亚利桑那州只有以&#34; a&#34;开头的字段。 如果用户键入&#34; c&#34;,下拉列表应显示康涅狄格州加利福尼亚州。 如果用户键入&#34; ca&#34;,下拉列表应仅显示加利福尼亚,因为它只匹配给定的输入字符串。

3 个答案:

答案 0 :(得分:9)

如果我理解正确,我认为您需要做的就是添加

  

| ORDERBY:&#39;名称&#39;

<div *ngIf="list.length > 0"></div>

查看orderBy了解详情

答案 1 :(得分:2)

在挖掘了一点之后,在Tomy和KreepN的帮助下,我找到了答案。在这里,

dispose

startsWith Filter如下:

   <ui-select ng-model="model.states">
     <ui-select-match placeholder="State">
       {{$item.Name}}
     </ui-select-match>
     <ui-select-choices repeat="item.Code as item in statesArray | startsWith:$select.search | orderBy:'Code'">
        {{item.Name}}
     </ui-select-choices>
   </ui-select>

答案 2 :(得分:0)

我尝试了以上所有选项,但仅在这种情况下才获得了结果。 它对我有用:

<ui-select-choices repeat="group in groups | filter: $select.search | orderBy:['name']">
  {{ group.name }}
</ui-select-choices>