当前在angularjs中实现预先输入的最佳方法

时间:2014-02-06 21:03:20

标签: angularjs twitter-bootstrap asynchronous typeahead

我需要使用angularjs实现从$ http请求中提取建议的预先输入功能。我正在使用Bootstrap 3.1。我无法让任何建议的实现工作。大多数人似乎都在使用Bootstrap 2.有许多第三方解决方案,其中没有一个我能够开始工作,包括ui-bootstrap,typeahead.js(来自twitter),以及其他建议。目前最简单的方法是什么?我发现只有6个月大的东西似乎已经过时了。

我正在尝试此处列出的说明: http://angular-ui.github.io/bootstrap/#/getting_started

我的观看代码:

<label for="originLocation" class="control-label">Origin Location</label>
<input id="originLocation" class="form-control"
                   ng-model="OriginLocation"
                   typeahead="suggestion for suggestion in getOriginSuggestions(OriginType, $viewValue)"
                   placeholder="Enter Location">

我的控制器:

    $scope.getOriginSuggestions = function (locationType, phrase) {
        locationRepository.searchByType(locationType, phrase)
            .then(function (response) {
                var locations = [];
                angular.forEach(response.data, function (item) {
                    locations.push(item.LongDescription);
                })
                return locations;
        });

我的控制器被击中,我确实填充了位置,但我从未看到打字行为。这是因为typeahead属性在bootstrap 3.1中不再起作用了吗?

1 个答案:

答案 0 :(得分:3)

虽然我不知道你的locationRepository是什么样子,但它似乎会返回一个承诺,因为你then正在使用它。在此then中,您将返回位置数组。

但你忘了在

返回承诺
$scope.getOriginSuggestions = function (locationType, phrase) {
        locationRepository.searchByType(locationType, phrase)
        // (...)

你需要退货。 (正如他们在example中所做的那样)

$scope.getOriginSuggestions = function (locationType, phrase) {
        return locationRepository.searchByType(locationType, phrase)
        // (...)