0

私はJSでこのコードを持っていますが、これは非常にうまく機能します。

  var values = new Bloodhound({
      datumTokenizer: function(d) { return Bloodhound.tokenizers.whitespace(d.num); },
      queryTokenizer: Bloodhound.tokenizers.whitespace,
      remote: '/url/that/returns/json'
   });

ただし、これは 1 回しか必要ないため、次のようにプリフェッチに変更しました。

  var values = new Bloodhound({
      datumTokenizer: function(d) { return Bloodhound.tokenizers.whitespace(d.num); },
      queryTokenizer: Bloodhound.tokenizers.whitespace,
      prefetch: {url: '/url/that/returns/json'}
   });

これにより、typeahead.js でエラー ("TypeError: a is undefined") が発生します。この機能を動作させるには、何を変更する必要がありますか?

編集:返されるjsonは、ブラウザでURLにアクセスした場合です:

[{"name":"MyName","id":"100","code":"CODE"}]

4

1 に答える 1

2

これは、私の datumTokenizer が num というフィールドを探していたために発生しました。

... return Bloodhound.tokenizers.whitespace(d.num)

しかし、私の JSON にはそのようなフィールドはありませんでした。これがリモートで機能した理由はわかりませんが、プリフェッチでは機能しませんでした。修正は、d.num を d.name に置き換えることでした。

于 2014-02-26T01:17:43.350 に答える