2013-08-02 21 views
11

我試圖做一個類似的例子是什麼Twitter的例子展示頁面上,更具體地說是一個與模板命名Open Source Projects by Twitter和我得到的東西部分工作,但它僅與始終只顯示1行結果,儘管我將其設置爲10,我拉着雅虎財經的數據和結果是JSON和有效的內部Firebug的,例如輸入字母「a」將做出類似的JSON對象:[Object { symbol="A", name="Agilent Technologies Inc.", exch="NYQ", more...}, Object { symbol="^DJI", name="Dow Jones Industrial Average", exch="DJI", more...}, more objects...]Twitter的事先鍵入的內容與模板始終只返回1行數據的

我的JS文件有這個鍵盤緩衝設置

$('.symbols .typeahead').typeahead({ 
    //name: 'symbols', 
    //remote: 'yahoo_autocomplete_ajax.php?action=autocjson&symbol=%QUERY', 
    limit: 3, 
    remote: { 
     url: 'yahoo_autocomplete_ajax.php?action=autocjson&symbol=%QUERY', 
     filter: function(parsedResponse) { 
      var dataset = []; 

      dataset = parsedResponse.data; 
      console.log(parsedResponse.data); 
      console.log(dataset); // debug the response here 

      return dataset; 
     } 
    }, 
    //prefetch: 'symbols.json', 
    template: [ 
     '<p class="symbols-exchange">{{exchDisp}}</p>', 
     '<p class="symbols-symbol">{{symbol}}</p>', 
     '<p class="symbols-name">{{name}}</p>' 
    ].join(''), 
    engine: Hogan 
}); 

隨着CON parsedReponse.datadataset的sole.log都顯示有效的數組。但最終它仍然總是顯示第一個結果,無論是什麼樣的,模板的工作方式看起來應該是這樣,現在在我的HTML代碼中,我有來自Twitter的示例運行,它總是顯示所有結果,但我只有1 ..所以爲什麼?如果需要的話,我也可以發佈我的HTML代碼,我只是想做的例子,所以HTML仍然是簡單的

我也有一個第二個問題當它顯示1結果,即使我點擊它選擇它,沒有在我的輸入顯示出來,但我想有符號值

這裏是我的HTML代碼部分

<form> 
     <div class="example symbols"> 
      <h2 class="example-name">Symbols</h2> 
      <p class="example-description">Defines a custom template and template engine for rendering suggestions</p> 

      <div class="demo"> 
       <input class="typeahead" type="text" placeholder="symbol"> 
      </div> 
     </div> 
    </form> 

回答

27

這方面的工作的幾天後,下班後,我終於找到了......我忘了現在可以解決我的兩個問題的一件小事。我已經忘記了我的JS中的這一小段代碼:valueKey: 'symbol'瞧!這就是爲什麼即使在我選擇了唯一顯示的行(我的問題#2)以及爲什麼它只顯示1行建議後,我也無法看到輸入中的任何內容。現在,一個更乾淨的代碼,我想出了這一點:

$('.symbols .typeahead').typeahead({ 
    limit: 5, 
    valueKey: 'symbol', 
    remote: { 
     url: 'yahoo_autocomplete_ajax.php?action=autocjson&symbol=%QUERY', 
     filter: function(parsedResponse) { 
      return parsedResponse.data; 
     } 
    }, 
    template: [ 
     '<p class="symbols-exchange">{{exchDisp}}</p>', 
     '<p class="symbols-symbol">{{symbol}}</p>', 
     '<p class="symbols-name">{{name}}</p>' 
    ].join(''), 
    engine: Hogan 
}); 
+0

好,你有它解決了;) –

+1

謝謝,我沒有看到,我是缺少這一塊,因爲它不是必需的字符串數組,並因爲我從琴絃開始,然後在物體後面,我監督着這片... – ghiscoding

+1

謝謝。這非常有幫助! – Dmitriy