1

これは私のデータです:

var markers = {
        "example": {"lat": -83.68088192646843, "lng": -125.270751953125, "type": "town"},
        "anotherexample": {"lat": -58.1548020417031, "lng": -21.318115234375, "type": "town"}
}

このデータ ソースを参照するにはどうすればよいですか?

編集:

メソッドは次のとおりです。

$('.thing').typeahead({source: markers});

markersしかし、それは機能しません。マーカー オブジェクトを選択するための正しい構文ではないためだと思います。代わりに何を使用すればよいですか?

4

3 に答える 3

0

私はこれを使用しました:

names = []; 
for (var k in markers) {
    if (markers.hasOwnProperty(k)) {
        names.push(k);
    }
}
于 2012-06-27T00:26:32.950 に答える
0

私はこの問題についてブログ投稿How to use rich objects and typed objects with Bootstrap Typeahead を書きました。toString()重要なのは、シリアル化するメソッドと逆シリアル化するメソッドを持つクラスにオブジェクトを入力することですfromString()(Bootstrap Typeaheadupdater関数で元の型のオブジェクトを参照するために使用されます)。私のブログではUsState、例として次のように使用します。

UsState.prototype.toString = function() {
    return JSON.stringify(this);
};

UsState.fromString = function(serializedState) {
    return $.extend(new UsState(), JSON.parse(serializedState));
};

次に、 の Typeahead 定義でupdater:

updater: function(state) {
    state = UsState.fromString(state);
    $stateMessage.html('<strong>' + state.name + '</strong> has ' + state.numElectoralVotes + ' electoral votes.');
    return state.name;
},

オブジェクトを適切に処理するために、他の Typehead メソッドの定義に注意してください。

highlighter: function(state) {
    return $.fn.typeahead.Constructor.prototype.highlighter.call(this, state.name);
},
于 2013-06-21T14:52:13.150 に答える
0

いくつかの方法でオブジェクトをシリアル化することができます。私の例 (jsfiddle)では、各エントリを連結して特定の文字列を取得しました。

var markers_as_str = Array();
for(var index in markers) {
    var marker = markers[index];
    var str = index+" : "+marker.lat+" "+marker.lng+" "+marker.type;
    markers_as_str.push(str);
}

$('#strs').typeahead({
    source: markers_as_str
});

matcherおよびsorterオプションをカスタマイズして、特定のプロパティを確認できます。ただし、選択肢の表示に問題があるため、オプションをオーバーライドする必要がありupdaterます。そして、あなたはそれを必要としないかもしれないので、これはすべて少し行き過ぎです.

于 2012-06-27T00:09:42.627 に答える