我正在使用Meteor与铁路由器,似乎无法使用typeahead(此版本:https://github.com/bassjobsen/Bootstrap-3-Typeahead)。
以下是一些代码:
HomeController = RouteController.extend({
//....
after: function () {
var tags = this.getData().tags;
console.log(tags);
if(tags.length > 0) {
var tags = ['hello', 'world'];
console.log("Adding typeahead for tags to ", $('.input-search')[0]);
console.log("tags: ", tags);
$('.input-search').typeahead({
source: tags,
updater: function(item) {
Router.go('/projects/tag/' + item);
}
});
}
},
我有一个标题是应用程序布局的一部分,并且输入如下:
<input type="text" class="form-control input-search" data-provide="typeahead" placeholder="Search">
after:函数中的jQuery正确获取输入。但是在输入上调用typeahead似乎没有正确激活typeahead:输入输入时没有任何反应。
但是如果我在setTimeout中包装typeahead调用,它确实有效。
当然,每当你开始在setTimeouts中包装东西时,事情就不对了。
使用Iron Router时,哪里/何时是初始化typeahead的正确位置?
答案 0 :(得分:0)
您可以在模板的rendered
功能中初始化预先输入。例如:
Template.mytemplate.rendered = function() {
$('.input-search').typeahead({
source: tags,
updater: function(item) {
Router.go('/projects/tag/' + item);
}
});
};
答案 1 :(得分:0)
我明白了。
您需要确保插件使用的任何输入都被Meteor“保留”,即不重新渲染。最简单的方法是确保输入具有ID属性。所以将我的搜索输入更改为固定它:
<input type="text" id="input-search" class="form-control" data-provide="typeahead" placeholder="Search">
答案 2 :(得分:0)
截至Meteor 1.0.3.1和iron:router@1.0.7工作解决方案是安装sergeyt:typeahead
和init typeahead,如下所示:
Template.MyTemplate.rendered = function () {
Meteor.typeahead.inject();
}
初始模板只能执行一次初始化。