0

我不确定我在使用 Twitter 的Typeahead引导插件时做错了什么。Typeahead 甚至没有进行 Ajax 查询(我可以在 Chrome 开发工具中看到没有发生查询)。

这是我的HTML:

<input type="text" id="BookSearch"/>

这是我的 Typeahead 代码:

    $("#BookSearch").typeahead([{
        name: "google-books-search",
        remote: "/Book/GoogleBookSearch?query=%QUERY",
        template: [
            "<img src='{{SmallThumbnailImageUrl}}' />",
            '<p>{{Title}}</p>',
            '<p>{{Authors}}</p>'
        ].join(),
        engine: Handlebars
    }]);

我可以验证 Handlebars 是否已加载。我可以验证 Typeahead 正在被初始化并且它正在寻找 BookSearch 控件(我通过 Typeahead 代码来查看这个)。

但是,Typeahead 代码似乎从未收到任何事件。我在 Focus、Blur 和 SpecialKeys(以及所有其他事件处理程序)处设置了断点,但没有识别任何内容。

我还尝试从上面的代码中注释掉 Template 和 Engine 行,让 Bootstrap 查询它无法识别的数据,但这也不起作用。

我可以浏览到远程 URL 并验证确实正在返回数据。但是,Typeahead 甚至都没有尝试过。

我错过了什么?

4

1 回答 1

0

好的,所以我找到了一个答案,但答案对我来说没有多大意义:

在浏览引导程序 (2.3.2) 代码时,我注意到 Typeahead 插件的代码明显少于https://github.com/twitter/typeahead.js上发布的代码。就像,除了事件处理程序之外几乎什么都没有。

所以我创建了一个不包含 Typeahead 插件的 Boostrap 自定义下载,然后在代码中单独引用了 Typeahead 插件。并没有奏效。

我不确定为什么嵌入在 Bootstrap 2.3.2 中的 Typeahead 不起作用,但包括 Typeahead 本身就解决了我的问题。

如果几天后我没有得到比这更好的答案,我会继续接受这个作为答案。但希望有人有更好的解决方案。

于 2013-08-22T14:35:58.943 回答