从JSON获取Typeahead的特定属性

时间:2014-08-12 21:56:26

标签: json typeahead.js

所有JSON项的格式都是这样并保存到/database.json:

"[{\"ndb_no\":01001,\"shrt_desc\":\"BUTTER,WITH SALT\",\"water_(g)\":15.87,\"energ_kcal\":717},\n
{\"ndb_no\":01002,\"shrt_desc\":\"BUTTER,WHIPPED,WITH SALT\",\"water_(g)\":15.87,\"energ_kcal\":717}]"

我想创建一个包含所有shrt_desc属性的预先输入,我发现的所有教程/示例都非常基础,并且不涉及具有多个属性的文件。

这是我放在一起的但我没有工作:

<div class="form-group">
      <input class="typeahead" type="text">
</div>

<script>

var description = new Bloodhound({
  datumTokenizer: Bloodhound.tokenizers.obj.whitespace('shrt_desc'),
  queryTokenizer: Bloodhound.tokenizers.whitespace,
  limit: 10,
  prefetch: {

    url: '/database.json',

  }
});




$('#prefetch .typeahead').typeahead(null, {
  name: 'countries',
  displayKey: 'shrt_desc',
  source: countries.ttAdapter()
});

</script>

如果我想添加更多信息,请告诉我。

1 个答案:

答案 0 :(得分:0)

您的代码有各种错误。请看下面的评论:

var description = new Bloodhound({
  datumTokenizer: Bloodhound.tokenizers.obj.whitespace('shrt_desc'),
  queryTokenizer: Bloodhound.tokenizers.whitespace,
  limit: 10,
  prefetch: {

    url: '/database.json',

  }
});

description.initialize() /****** THIS WAS MISSING ******/


$('.typeahead').typeahead(null, {    /***** gotta match an existing input ***/
  name: 'countries',
  displayKey: 'shrt_desc',
  source: description.ttAdapter() /***** WAS countries.ttAdapter(), countries does not exist ****/
});

</script>

但是,因为在您基于代码的typeahead示例中可以很容易地看到这一点,我假设真正得到的是无效的JSON:

  

JSON整数绝不能以零(0)

开头

你的ndb_no字段从零开始。这打破了猎犬/先行者,导致他们无声地失败。引用它们,并应用我提到的修复程序,你应该很高兴。