Javascript typeahead.js:更改数据源,它作为助手提供
我需要更改typeahead输入字段的助手源(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
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(),使用(请参见我的编辑)