2014-03-29 57 views
13

我有國家的JSON列表:http://vocab.nic.in/rest.php/country/json和事先鍵入的內容尋血獵犬 - 如何獲得JSON結果

而我試圖讓COUNTRY_ID和國家名稱與警犬建議引擎。 O嘗試以下代碼:

var countries = new Bloodhound({ 
    datumTokenizer: Bloodhound.tokenizers.obj.whitespace('country_name'), 
    queryTokenizer: Bloodhound.tokenizers.whitespace, 
    limit: 10, 
    prefetch: { 
     url: 'http://vocab.nic.in/rest.php/country/json', 
     filter: function(response) { 
      return response.countries; 
     } 
    } 
}); 

$('#my-input').typeahead({ 
     hint: true, 
     highlight: true, 
     minLength: 1 
    }, 
    { 
     name: 'states', 
     displayKey: 'value', 
     source: countries.ttAdapter() 
    }); 

哪一個不行。我應該如何更改代碼才能使其工作?

+3

是http://vocab.nic.in/rest.php/country/json在同一個域中爲您的網站?如果不是,那麼你需要使用「遠程」,而不是「預取」 –

回答

11
// instantiate the bloodhound suggestion engine 
var countries = new Bloodhound({ 
    datumTokenizer: function(countries) { 
     return Bloodhound.tokenizers.whitespace(countries.value); 
    }, 
    queryTokenizer: Bloodhound.tokenizers.whitespace, 
    remote: { 
    url: "http://vocab.nic.in/rest.php/country/json", 
    filter: function(response) {  
     return response.countries; 
    } 
    } 
}); 

// initialize the bloodhound suggestion engine 
countries.initialize(); 

// instantiate the typeahead UI 
$('.typeahead').typeahead(
    { hint: true, 
    highlight: true, 
    minLength: 1 
    }, 
    { 
    name: 'countries', 
    displayKey: function(countries) { 
    return countries.country.country_name;   
    }, 
    source: countries.ttAdapter() 
}); 

Example Codepen

輸出事先鍵入的內容

Output of Typeahead

注:

  • 您的服務器= 「預取」 數據。從外面=「遠程」
  • 數據
+0

謝謝,看起來不錯,但給了我'未捕獲TypeError:不能調用方法'分裂'的血統.min.js – user1049961

+1

在datumTokenizer我使用的國家/地區,必須是countries.value。相應地更新了代碼和Codepen。鉻是clowny給我,使用Firefox :) –

+1

打開的bug:https://github.com/twitter/typeahead.js/issues/799 –

相關問題