UI Bootstrap typeahead承诺角度形式的问题

时间:2015-11-17 09:35:50

标签: angularjs angular-ui-bootstrap angular-formly

我正在使用带有集成ui bootstrap typeahead的角度形式来通过服务查询api。承诺已正确解决,但是typeaheads列表仅显示已用输入查询的数据。

简单示例:我输入:"伯尔尼",该服务触发四个请求:

  1. QUERY_TERM = B
  2. QUERY_TERM =成为
  3. QUERY_TERM =误码率
  4. QUERY_TERM =伯尔尼
  5. 承诺得到妥善解决,顺序正确。但是使用来自query_term = Ber的数据输入清单建议,而不是最后一个query_term =伯尔尼。

    有什么建议吗?

    以下是代码详细信息:

    服务:

    var srv = {        
            getName: function (query_term) {},        
        };
    
    srv.getName = function (query_term) {
    return $http.get(srv._baseUrl + '/locating/api/autocomplete?query_term=' + query_term)
            .then(function(res) {
                return res.data;
            }).catch(function (err) {
                console.log(err);
            });
    };
    
    return {    
            getName: function (query_term) {
                return srv.getName(query_term);
            }
    };
    

    (形式)控制器:

    {
                key: '_name',
                type: 'autocompleteNoWildcard',
                templateOptions: {
                    options: [],
                    onChange: function ($viewValue, $scope) {                        
                        if (typeof $viewValue != 'undefined') {
                            return $scope.templateOptions.options = locationService.getName($viewValue);                            
                        };
                    }
                }
            },
    

    Html模板:

    formlyConfig.setType({
                name: 'autocompleteNoWildcard',
                template: '<input type="text" autocomplete="off" ng-model="model._name" uib-typeahead="item.label for item in to.options" typeahead-no-results="noResults" class="form-control">',
                wrapper: ['bootstrapLabel', 'bootstrapHasError'],
            });
    

1 个答案:

答案 0 :(得分:0)

当名称长度超过3个字符时,加油门并开始轮询。