typeahead.js - 加载 npm typeahead.js 时如何引用 typeahead 和 Bloodhound

标签 typeahead.js

我已经使用 npm 安装了 typeahead.js。根据我的阅读,这包括预输入和猎犬。

然后我在我的模块中需要 jquery 之后需要它。

但现在当我打电话

new Bloodhound()

Bloodhound 是(可以理解的)未定义的。

我只能在 html 的脚本文件中分别找到包括 bloodhound.js 和 typeahead.js 的示例。

如何通过要求 npm 来做到这一点?

以防万一:这是我的完整模块:

/*
* 获取所有对象
* 构建过滤器组件所需的对象数组,以创建可过滤对象列表
* 返回过滤器组件
*/
'使用严格'
import $ from 'jquery'
import React from 'react'
import 'typeahead.js'

export default React.createClass({
  displayName: 'Filter',

  propTypes: {
    data: React.PropTypes.arrayOf(React.PropTypes.object).isRequired
  },

  componentDidMount () {
    const objects = this.props.data
      .map(function (object) {
        // make sure every fauna has a name
        // dont use others for filtering
        if (object.Taxonomie && object.Taxonomie.Eigenschaften && object.Taxonomie.Eigenschaften['Artname vollständig']) {
          return {
            id: object._id,
            label: object.Taxonomie.Eigenschaften['Artname vollständig']
          }
        }
      })
    const fauna = new Bloodhound({
        datumTokenizer: Bloodhound.tokenizers.whitespace('label'),
        queryTokenizer: Bloodhound.tokenizers.whitespace,
        local: objects
      })
    $('#bloodhound .typeahead').typeahead({
      minLength: 3,
      highlight: true
    },
    {
      name: 'fauna',
      valueKey: 'label',
      limit: 20,
      source: fauna
    })
  },

  render () {
    return (
      <div id='bloodhound'>
        <input className='typeahead' type='text' placeholder='filtern'/>
      </div>
    )
  }
})

最佳答案

文件typeahead.bundle.js应该同时提供Typeahead和Bloodhound,但是像你提到的那样通过Node加载时似乎没有提供对Bloodhound的访问。

一种解决方法是分别导入 Typeahead 和 Bloodhound(相同的 NPM 包):

require("typeahead.js/dist/typeahead.jquery.min.js")
Bloodhound = require("typeahead.js/dist/bloodhound.min.js")

关于typeahead.js - 加载 npm typeahead.js 时如何引用 typeahead 和 Bloodhound,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30750916/

相关文章:

javascript - 我怎么能覆盖css typeahead js

javascript - 将 Typeahead 与 SignalR 结合使用

javascript - Typeahead.js - 在多个属性值中搜索

javascript - Typeahead.js - 使用一个远程源的多个数据集

javascript - 带有可点击链接的 Typeahead.js

twitter-bootstrap - 如何使用 typeahead 示例?

jquery - Twitter Typeahead.js Bloodhound 远程返回未定义

javascript - Bootstrap Typeahead 单击时发送表单

loading - twitter typeahead + bloodhound 再利用 : how do I show a loading gif for the ajax request?

jquery - Typeahead 和 Bloodhound - 如何获取 JSON 结果