繁体   English   中英

AngularJS typeahead按功能添加自定义排序

[英]AngularJS typeahead add custom sort by function

我正在尝试构建一个typeahead,它应该获得指定数量的结果并按startwith排序。

这意味着如果我有价值观:阿拉巴马州,密苏里州,马里兰州,马萨诸塞州等,并输入输入字段“m”或“M”,顺序应该是马里兰州,密苏里州,马萨诸塞州,阿拉巴马州。

因此我的代码如下所示:

<input class="input-large" type="text" ng-model="selected" 
  typeahead="state for state in states | filter:$viewValue | limitTo:8">

我尝试添加自定义过滤器功能:

<input class="input-large" type="text" ng-model="selected" 
  typeahead="state for state in states | filter:$viewValue | orderBy:orderByStartsWith()| limitTo:8">

功能:

$scope.orderByStartsWith = function() {
    return function(element){
        return element.toLowerCase().startsWith($scope.selected.toLowerCase()) ? 0 : 1;         
    }
};

这不起作用,因为selected的范围值未更新,如此JSFiddle中所示

是否有任何解决方案可以获得所需的订单?

按功能将$ viewValue传递给您的订单,并使用它来对结果进行排序。

<input class="input-large" type="text" ng-model="selected" typeahead="state for state in states | filter:$viewValue | orderBy:orderByStartsWith($viewValue) | limitTo:8">

 $scope.orderByStartsWith = function(viewValue) {
      return function(element){
        return element.toLowerCase().startsWith(viewValue.toLowerCase()) ? 0 : 1;           
      }
    };

检查小提琴: http//jsfiddle.net/2umL5yqL/1/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM