我已经使用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>
)
}
})
答案 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