2015-11-17 31 views
1

我使用角formly集成UI引导预输入查询通过服务的API。承诺已正确解决,但typeahead列表仅显示已过去的输入查询的数据。UI引导预输入承诺问题与角formly

简单的例子:I型: “伯尔尼”,服务火的四个请求:

  1. QUERY_TERM = B
  2. QUERY_TERM =成为
  3. QUERY_TERM =小檗碱
  4. QUERY_TERM =伯尔尼

的承诺得到适当和正确的顺序解决。但是使用来自query_term = Ber而不是最后一个query_term = Bern的数据提前输入列表建议。

有什么建议吗?

下面是详细代码:

服务:

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); 
     } 
}; 

(formly)控制器:

{ 
      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'], 
     }); 
+0

你是说'onChange'处理程序正在触发,但typeahead选项没有得到更新? – icfantv

+0

他们得到上述查询的更新而是数据,正如我上面描述。 – kOssi

+0

因此,传入'onChange'处理程序的数据不正确?因为这是你在'templateOptions.options'上设置的数据。 – icfantv

回答

0

放了油门,开始投票当呐我是更长的3个字符。

+1

虽然这可能是一个有价值的线索来解决这个问题,答案真的需要证明的解决方案。请[编辑]提供示例代码来展示你的意思。或者,可以考虑将其写为注释。 –