在流星应用程序中获取typeahead-input的结果数量

时间:2015-10-06 07:46:30

标签: meteor typeahead.js

我正在使用var SystemTime: TSystemTime; begin GetLocalTime(SystemTime); with SystemTime do Result := EncodeDate(wYear, wMonth, wDay) + EncodeTime(wHour, wMinute, wSecond, wMilliseconds); end; 与我的流星应用程序一起使用typeahead。我正在使用多个数据集:

辅助

sergeyt:typeahead

结果模板:

  Template.demo.helpers({
    teams: function() {
      return [
        {
          name: 'nba-teams',
          valueKey: 'name',
          local: function() { return Nba.find().fetch(); },
          header: '<h3 class="league-name">NBA Teams</h3>',
          template: 'team'
        },
        {
          name: 'nhl-teams',
          valueKey: 'name',
          local: function() { return Nhl.find().fetch(); },
          header: '<h3 class="league-name">NHL Teams</h3>',
          template: 'team'
        }
      ];
    }
  });

现在我需要知道,例如对于表单的提交事件,如果有结果/有多少结果。但我没有找到任何信息如何做到这一点。

也许我必须迭代<template name="team"> <h4><i>{{name}}</i></h4> </template> 中的元素,但这对我来说非常糟糕。

2 个答案:

答案 0 :(得分:1)

你可以试试这个。我假设,结果显示为li元素。如果您的模板中有不同的内容,则必须更改find()

'submit form': function(event) {
    event.preventDefault();
    var newElement = $('.tt-menu').find("li").length == 0,
    hasContent = event.target[1].value.length > 0;
    if (hasContent && newElement) {
        console.log('new element');
    }
    else { console.log($('.tt-menu').find("li").length); }
}

答案 1 :(得分:0)

我会使用typeahead:render事件。根据Twitter的typeahead.js文档:

  

将使用4个参数调用事件处理程序:jQuery事件对象,呈现的建议​​,指示是否异步提取建议的标志,以及呈现发生的数据集的名称英寸

所以你可以将事件绑定到你的输入:

Template.demo.onRendered(function () {
  this.$('.typeahead').bind('typeahead:render', function(ev, suggestions) {
    // may not be that simple to fetch, but inspect the object and you can figure it out
    console.log(suggestions.length); 
  });
});