Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript typeahead.js:更改数据源,它作为助手提供_Javascript_Meteor_Typeahead.js - Fatal编程技术网

Javascript typeahead.js:更改数据源,它作为助手提供

Javascript typeahead.js:更改数据源,它作为助手提供,javascript,meteor,typeahead.js,Javascript,Meteor,Typeahead.js,我需要更改typeahead输入字段的助手源(sergeyt:typeahead): 助手 Template.searchMain.helpers({ searchData: function() { // build some dataset from collections return ['complex', 'old', 'dataset']; }, newData: function() { // build so

我需要更改typeahead输入字段的助手源(
sergeyt:typeahead
):

助手

Template.searchMain.helpers({
    searchData: function() {
        // build some dataset from collections
        return ['complex', 'old', 'dataset'];
    },
    newData: function() {
        // build some dataset from collections
        return ['another', 'new', 'dataset'];
    }
});
Template.searchMain.events({
    'keyup .typeahead': function(event, template) {
        if ($(event.currentTarget).val() == 'change') {
            Session.set('dataSets', 'new');
        }
        else {
            Session.set('dataSets', 'search');
        }
    }
})
Template.searchMain.helpers({
  varDataSets: function() {
    if (Session.get('dataSets') === 'search') {
      // build some dataset from collections
      return ['complex', 'old', 'dataset'];
    }
    // build some dataset from collections
    return ['another', 'new', 'dataset'];
  }
});
因为我会像这样更改数据集

$('.typeahead').typeahead('destroy');
$('.typeahead').typeahead({
    local: data
});
。。。我无法使用助手。所以我不知道如何回到原点

也许你可以用一个变量来做这个

<template name="searchMain">
    <input  class="typeahead" 
            type="text" 
            autocomplete="on" 
            spellcheck="off" 
            data-sets="varDataSets" />
</template>
助手

Template.searchMain.helpers({
    searchData: function() {
        // build some dataset from collections
        return ['complex', 'old', 'dataset'];
    },
    newData: function() {
        // build some dataset from collections
        return ['another', 'new', 'dataset'];
    }
});
Template.searchMain.events({
    'keyup .typeahead': function(event, template) {
        if ($(event.currentTarget).val() == 'change') {
            Session.set('dataSets', 'new');
        }
        else {
            Session.set('dataSets', 'search');
        }
    }
})
Template.searchMain.helpers({
  varDataSets: function() {
    if (Session.get('dataSets') === 'search') {
      // build some dataset from collections
      return ['complex', 'old', 'dataset'];
    }
    // build some dataset from collections
    return ['another', 'new', 'dataset'];
  }
});
onRendered

Template.searchMain.onRendered(function () {
  this.autorun(function () {
    // will trigger the autorun everytime dataSets changes
    Session.get('dataSets');
    Meteor.typeahead.inject('.typeahead');
  });
});

我认为这是行不通的,因为数据集将在渲染时初始化。在这一点之后改变任何事情都不会给我带来新的结果…我明白了。。。如果强制重新渲染?看我的编辑不,这也不行。我想我需要销毁该实例,并执行类似于Meteor.typeahead.inject()的操作。但我真的不知道如何…然后每次会话变量更改时,您都可以尝试触发Meteor.typeahead.inject(),使用(请参见我的编辑)