2015-11-17 33 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

雖然這可能是一個有價值的線索來解決這個問題,答案真的需要證明的解決方案。請[編輯]提供示例代碼來展示你的意思。或者,可以考慮將其寫爲註釋。 –