1

问题描述

嗨,我对 UI-Bootstrap 的预输入有疑问,主页上有一个标准示例演示了预输入的用法:

http://plnkr.co/edit/LS5OMsnQtdsJ87eW4pjG?p=preview

这个例子工作得很好,直到我开始使用带有typeahead指令的承诺: http ://plnkr.co/edit/ZuUBDOPcOJIW0Bkskrb5?p=preview

更改非常简单,我使用 $timeout 服务将直接变量初始化替换为延迟初始化,结果 typeahead 停止工作

问题:

我究竟做错了什么?明确指出 UI-Bootstrap 的 typeahead:works with promises and it means that you can retrieve matches using the $http service with minimal effort

谢谢,

4

1 回答 1

3

您应该返回一个解决匹配结果的承诺:

$scope.getStates = function($viewValue) {    
    return $timeout(function () {
      return filterFilter(['Alabama', 'Alaska', ...], $viewValue);
    }, 1000);    
  };

然后在 HTML 中:

<input type="text" ng-model="selected" typeahead="state for state in getStates($viewValue)">

这是一个有效的 plunk:http ://plnkr.co/edit/RAkzX0UoWHVLUOZ6jEyA?p=preview

您在被过滤的承诺中编写表达式的方式。

于 2013-07-27T11:12:33.273 回答