javascript - typeahead.js - 渲染事件 - 没有在一个参数中获得建议数组

标签 javascript jquery typeahead.js typeahead

我正在尝试使用 typeahead 渲染事件,但无法正确传入参数。

引用https://github.com/twitter/typeahead.js/blob/master/doc/jquery_typeahead.md#custom-events渲染事件应该通过 4 个参数..

我已经按如下方式设置了预输入和事件处理程序:

         $('#input').typeahead({
         hint: true,
         highlight: true,
         minLength: 1
     },
 {
     name: 'items',
     source: items
 })
 .on('typeahead:render', onRender);

 function onRender($event, $suggestions, $async, $dataSet)
         {
}

按预期渲染事件文件,但未正确传递参数。

$event 是指定的 jQuery 事件对象。但是,我希望第二个参数 $suggestions 是一个包含当前建议的数组,但它只包含第一个建议。接下来的两个参数包含第二和第三条建议,而不是预期的异步标志和数据集名称。

请参阅下面的示例,了解我正在做的事情。发送到控制台的参数。

var substringMatcher = function(strs) {
  return function findMatches(q, cb) {
    var matches, substringRegex;

    // an array that will be populated with substring matches
    matches = [];

    // regex used to determine if a string contains the substring `q`
    substrRegex = new RegExp(q, 'i');

    // iterate through the pool of strings and for any string that
    // contains the substring `q`, add it to the `matches` array
    $.each(strs, function(i, str) {
      if (substrRegex.test(str)) {
        matches.push(str);
      }
    });

    cb(matches);
  };
};

var states = ['Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California',
  'Colorado', 'Connecticut', 'Delaware', 'Florida', 'Georgia', 'Hawaii',
  'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana',
  'Maine', 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota',
  'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Hampshire',
  'New Jersey', 'New Mexico', 'New York', 'North Carolina', 'North Dakota',
  'Ohio', 'Oklahoma', 'Oregon', 'Pennsylvania', 'Rhode Island',
  'South Carolina', 'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont',
  'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming'
];

console.log("starting");
$('#the-basics .typeahead').typeahead({
  hint: true,
  highlight: true,
  minLength: 1
},
{
  name: 'states',
  source: substringMatcher(states)
})
.on('typeahead:render', onRender);

   function onRender($event, $suggestions, $async, $dataSet)
         {
           console.log($event);
             console.log($suggestions);
             console.log($async);
             console.log($dataSet);
           
           }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://twitter.github.io/typeahead.js/releases/latest/typeahead.bundle.js"></script>

<div id="the-basics">
<input type="text"  class="typeahead" />
  </div>

最佳答案

我发现这个是为了得到建议

x.bind('typeahead:render',
            function (ev) {
                var suggestions = Array.prototype.slice.call(arguments, 1);
            }
        );

异步和数据集参数似乎完全缺失

关于javascript - typeahead.js - 渲染事件 - 没有在一个参数中获得建议数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33670028/

相关文章:

javascript - webpack编译错误: TypeError: __WEBPACK_IMPORTED_MODULE_1__ … is not a function

javascript - 在 KineticJS 中缩放和平移

jQuery 计算某个类的 div 数量?

jQuery 阻止图像被点击,直到其他功能完成

javascript - Typeahead.js - 预取动态 php 生成的 JSON

javascript - Twitter Typeahead 最小长度 = 0 等效?

javascript - IE8 JavaScript : select. 选项行为

javascript - 通过 Yammer API 上传文件

javascript - 如何避免旋转时自动左对齐?

javascript - Bootstrap Typeahead 单击时发送表单