私はこの問題についてブログ投稿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);
},