我刚刚更新到了typeahead的新版本(v0.10.0),到目前为止我印象非常深刻。
但是,我发现在呈现建议时无法跟踪事件。以前我做过这个:
myTypeahead = typeahead({.....});
myTypeahead.data('ttView').dropdownView.on('suggestionsRendered', function() {
// Suggestions is now rendered
});
但现在却说不出来:
Uncaught TypeError: Cannot read property 'dropdownView' of undefined
答案 0 :(得分:0)
在typeahead.js文件中,我添加了一个在打开菜单时触发的自定义事件。
在下面的方法中,我添加了定义事件的最后一行代码:
_updateHint: function updateHint() {
var datum, inputValue, query, escapedQuery, frontMatchRegEx, match;
datum = this.dropdown.getDatumForTopSuggestion();
if (datum && this.dropdown.isVisible() && !this.input.hasOverflow()) {
inputValue = this.input.getInputValue();
query = Input.normalizeQuery(inputValue);
escapedQuery = _.escapeRegExChars(query);
frontMatchRegEx = new RegExp("^(?:" + escapedQuery + ")(.*$)", "i");
match = frontMatchRegEx.exec(datum.value);
this.input.setHintValue(inputValue + (match ? match[1] : ""));
//custom event fired when menu opens
//to use: .on('typeahead:rendered', function($e, datum) {...}
this.eventBus.trigger('rendered', datum.raw, datum.datasetName);
}
},
我知道修改源代码是禁止的,但是在罗马时......