我就此事写了一篇博文,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;
},
请注意其他 Typeahead 方法的定义以正确处理您的对象:
highlighter: function(state) {
return $.fn.typeahead.Constructor.prototype.highlighter.call(this, state.name);
},