苦苦挣扎使用sergeyt:使用Discover Meteor的代码架构预先输入

时间:2014-10-22 01:30:28

标签: meteor typeahead.js

我希望使用来自Discover Meteor的推荐代码组织将Typeahead用作Meteor项目的一部分。 Atmosphere有一个包,这个包看起来应该有效,sergeyt:typeahead

我想在clent/views/application/layout.html中使用typeahead启用input#wbsSearch,但似乎无法弄清楚如何让它正常工作。最初我将逻辑放在client/views/application/layout.js中,但它告诉我我的集合的全局名称Wbs尚未定义......我仍然不明白。

将代码移到client/main.js解决了Wbs全局集合的问题,虽然我不知道为什么。尽管如此,虽然输入字段没有预先输入行为,所以我仍然非常困惑。

非常感谢对此的任何见解。一旦超过这个,这个小应用程序中的其余CRUD功能将相对简单,但这让我感到困惑......陷入了一些僵局。

1 个答案:

答案 0 :(得分:1)

client/views/application但未在client/main.js中未定义Wbs的可能原因是首先加载嵌套文件,而最后加载main。*文件(请参阅文档here关于加载顺序)。解决加载顺序问题和未初始化的类型的方法是将其包装在渲染函数中,例如:

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)。希望这可以帮助!