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

时间:2015-06-10 08:22:48

标签: typeahead.js

我已经使用npm安装了typeahead.js.从我读到的内容,这包括先行和猎犬。

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

但现在我打电话

new Bloodhound()

Bloodhound(可以理解)未定义。

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

如何通过要求npm来完成?

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

/ *      *获取所有对象      *构建过滤器组件所需的对象数组,以创建可过滤对象列表      *返回过滤器组件      * /     'use strict'

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>
    )
  }
})

2 个答案:

答案 0 :(得分:2)

对于最近遇到此问题的人来说,无论您如何加载该软件包,该软件包的捆绑版本都不再附带。

要解决这个问题,只需要单独使用Bloodhound包。您还希望将其绑定到Bloodhound变量。

如果像我一样,您使用的是webpack或外部内容,那么您可能需要将其绑定到npm install bloodhound-js --save

所以,首先安装包:

window

然后需要它(您可能不需要window.Bloodhound = require('bloodhound-js');绑定):

$(function(){ $("input[name=myList]").on("click",function(){ $("input[name=myList]:not(:checked)").each(function() { console.log($(this).val()); }); }); });

答案 1 :(得分:1)

这是捆绑文件中错误的代码顺序问题。请参阅我在此处提交的问题:https://github.com/twitter/typeahead.js/issues/1546