我试图建立一个应该获得指定数量的结果并按startwith排序的预先输入。
这意味着如果我确实拥有这些值:Alabama,Missouri,Maryland,Massachusetts等,并输入输入字段" 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
是否有任何解决方案可以获得所需的订单?
答案 0 :(得分:3)
按功能将 $ 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;
}
};