angular-ui bootstrap typeahead with promise和orderBy

时间:2014-06-11 18:22:23

标签: angularjs angular-ui-bootstrap

我正在尝试使用带有Angular-ui引导程序的typeahead指令,如下所述: http://angular-ui.github.io/bootstrap/#/typeahead

我的最终目标是进行$ http调用以返回一个对象数组。我有这个工作得很好,但我无法让orderBy或limitTo过滤器工作。

我使用以下承诺复制了类似的结果: http://plnkr.co/edit/AFPjWArALkZU5ImzgobG?p=preview

两个结果都应按状态名称降序排序,但只有对象填充的结果实际上是这样做的。

我的问题是我是否遗漏了某些东西,或者这是否是已知的限制?有没有解决方法?我知道我可以在承诺后使用“then”在控制器中进行排序,但这看起来有点笨重。

1 个答案:

答案 0 :(得分:0)

你写它的方式是使一个过滤器作用于承诺本身,而不是承诺的结果。在这种情况下,正确的方法是在JavaScript中进行实际过滤,如下所示:

$scope.getStates = function(val) {
    return $timeout(function(){
      return orderByFilter(filterFilter($scope.statesWithFlags, val), 'name', true);
    }, 500)
  };

作为旁注:$timeout服务API已基于承诺,因此无需明确使用$q

这是一个插件:http://plnkr.co/edit/w5rhFKgYKNOQ6FFVNoUY?p=preview