0

質問1:

次のコードがあります。

// NOTE: Initiate auto-complete
  $('#edit-keyword').typeahead({
    remote: '/products/autocomplete.json/%QUERY', 
    wildcard: '%QUERY'
  }).bind('typeahead:selected', function(object, datum) {
    console.log(object);
  });

サーバーから次の JSON を返します。

1: "Bustello Cafe Coffee Regular"
110: "Barista Prima Coffeehouse Coffee Pods K Cups Darkest Roast French Roast"
713: "Bolthouse Farms Protein Plus Coffee"
5680: "Bustello Cafe Coffee Regular"
5693: "Bustello Cafe Coffee Regular"

各アイテムに関連付けられた ID を取得するには、上記のコード スニペットに何を追加すればよいでしょうか...現在、'datum' は文字列値のみを返します。

質問2:

JSON が一意の ID を持つ複数の「Bustello Cafe Coffee Regular」を返すことに気付きましたが、レンダリングされたドロップ リストには一度に 1 つしか表示されないようです。それはどこにある???

アレックス

4

1 に答える 1

0

typeahead:selectedおよびtypeahead:autocompletedカスタム イベントを 使用してID、必要に応じて各アイテムに関連付けられた を取得できますが、json には適切なIDプロパティが必要です。例:

[{"ID":111, "Name":"blah"},{"ID":222, "Name":"buuu"}]

jquery と typehead を使用すると、次のようになります。

    $("#edit-keyword").on("typeahead:selected typeahead:autocompleted",
        function(e, datum) {
            // datum containts datum.ID here, do what you want with it
            //.. i.e. assign to a hidden input or knockout observable, etc.
        }
    );

重複の質問については、その構成を見たことがありません.typeaheadは、データがまだない場合はtypeaheadデータに変換しようとします。そのため_transformDatum、typeaheadの機能である可能性があります。

これを回避し、何が起こるかを確認するために、データを先行入力データとして自分で構造化することをお勧めします。通常の構造化方法については、https://github.com/twitter/typeahead.js#datumobjectを参照してください。あなたの場合は値となり、適切なプロパティを指定する必要がありますvalueKey

于 2013-10-23T13:53:04.933 に答える