0

typeahead.js は、返される結果が配列になる場合にうまく機能します。

  var simpleCountriesList = [
     "Andorra",
     "United Arab Emirates",
     "Afghanistan",
     "Antigua and Barbuda"
  ];

私の場合、オブジェクトの配列がありますが、次のようなオブジェクトにラップされています。

  var countryObjectsWrappedInResults = {
   "results":[
      {
         "name":"Andorra"
      },
      {
         "name":"United Arab Emirates"
      },
      {
         "name":"Afghanistan"
      },
      {
         "name":"Antigua and Barbuda"
      }
   ]
};

また

{
   "maintainers":[
      {
         "name":"Jake Harding",
         "url":"https://twitter.com/JakeHarding"
      },
      {
         "name":"Tim Trueman",
         "url":"https://twitter.com/timtrueman"
      },
      {
         "name":"Veljko Skarich",
         "url":"https://twitter.com/vskarich"
      }
   ]
}

ローカルとリモートの両方の問題を説明するために、小さな jsbin を作成しました: http://jsbin.com/OseWeKA/5/edit

アップデーターを使用して結果から配列をポップすることができたブートストラップ typeahead から移行しています。twitter.jsに相当するものは何ですか?

4

2 に答える 2

2

リモート データセットに「filter:」を追加します。何かのようなもの:

remote: {
    url: '...',
    filter: function (response) {
        retval = [];
        for (var i = 0;  i < response.maintainers.length;  i++) {
            retval.push(response.maintainers[i].name);
        }
        return retval;
    },
}

filterリモート応答をデータの配列に変換します。

いずれにせよ、サーバーが JSONP をサポートしていないため、フィドルは機能しませんdataType: "jsonp"。サーバーはtext/plainとしても返しますContent-Typeが、 as is はスクリプトを返す必要があります。「ライブ」システムには実際の問題はないと思います。

于 2013-09-29T08:52:34.120 に答える