努力使用sergeyt:typeahead和DiscoveryMeteor的代码模式
我希望使用Typeahead作为Meteor项目的一部分,使用组织推荐的代码。Atmosphere有一个包,这个包看起来应该可以工作 我想使用typeahead在中启用努力使用sergeyt:typeahead和DiscoveryMeteor的代码模式,meteor,typeahead.js,Meteor,Typeahead.js,我希望使用Typeahead作为Meteor项目的一部分,使用组织推荐的代码。Atmosphere有一个包,这个包看起来应该可以工作 我想使用typeahead在中启用input#wbsSearch,但似乎无法确定如何使其工作。最初我把逻辑放在client/views/application/layout.js中,但它告诉我我的收藏的全局名称,Wbs,还没有定义……我仍然不明白 移动代码解决了Wbs全局集合可用的问题,尽管我不知道为什么。尽管如此,尽管输入字段没有typeahead行为,所以我仍
input#wbsSearch
,但似乎无法确定如何使其工作。最初我把逻辑放在client/views/application/layout.js
中,但它告诉我我的收藏的全局名称,Wbs
,还没有定义……我仍然不明白
移动代码解决了Wbs全局集合可用的问题,尽管我不知道为什么。尽管如此,尽管输入字段没有typeahead行为,所以我仍然很困惑
对此有任何见解都将不胜感激。一旦超过这一点,这个小应用程序中其余的CRUD功能将相对简单,但这让我陷入了某种僵局。在
client/views/application
中未定义Wbs,但在client/main.js
中未定义Wbs的可能原因是首先加载嵌套文件,而main.*文件是最后加载的(请参阅关于加载顺序的文档)。解决加载顺序和typeahead未初始化问题的方法是将其包装到渲染函数中,例如:
Template.layout.rendered = function () {
Meteor.typeahead('input#wbsSearch', function () {
// create list of abbreviations
var wbsList = Wbs.find({modifier: false}).fetch().map(function (wbsItem) {
return wbsItem.abbrev;
});
// return the sorted list
return wbsList.sort();
});
};
这样做应该确保DOM已经准备好被typeahead“感染”(即使在嵌套文件中,
client/views/application/layout.js
)。希望这有帮助 这是杰出的。它完全可以工作,也感谢您对从内到外加载文件的解释。虽然知道main.*最后加载,但我不知道由内而外的分层加载行为。现在,我需要仔细阅读Meteor.layout.rendered正在做什么,但我可以做到。非常感谢你帮我克服了这个障碍。这件事我已经坚持了好几天了。