Typeahead.js v0.10.0 - 关于提出的建议

时间:2014-02-04 12:08:40

标签: javascript jquery typeahead.js

我刚刚更新到了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

你知道吗?这里描述的所有自定义事件都不是:https://github.com/twitter/typeahead.js/blob/master/doc/jquery_typeahead.md#custom-events可以解决问题。

1 个答案:

答案 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);

    }
},

我知道修改源代码是禁止的,但是在罗马时......