Javascript 使用承诺时的角度UI提前限制结果

Javascript 使用承诺时的角度UI提前限制结果,javascript,angularjs,angular-ui-bootstrap,Javascript,Angularjs,Angular Ui Bootstrap,我用叉子叉了一个叉子作为例子 在标记中使用承诺内联时,如下所示: <div class='container-fluid' ng-controller="TypeaheadCtrl"> <pre>Model: {{selected| json}}</pre> <input type="text" ng-model="selected" typeahead="state for state in getStates($viewValue)

我用叉子叉了一个叉子作为例子

在标记中使用承诺内联时,如下所示:

<div class='container-fluid' ng-controller="TypeaheadCtrl">
    <pre>Model: {{selected| json}}</pre>
    <input type="text" ng-model="selected" typeahead="state for state in getStates($viewValue) | limitTo: 5">
</div>

模型:{selected | json}

如果在控制器中键入“A”,可以看到Limito选项被忽略。可以这样使用吗?

您需要限制收回承诺的结果。

AngularJS过滤器是同步执行的,如果您在getLocation($viewValue)| filter:$viewValue中编写类似address for address的表达式,这部分getLocation($viewValue)意味着过滤器将过滤promise对象(这是noop,因为过滤器过滤器只能对数组进行操作)。这里正确的方法是在服务器端进行过滤(这是从服务器获得异步结果的关键)。如果您仍然希望在客户端执行进一步的过滤,可以在JavaScript的promise回调函数中执行