【发布时间】:2015-01-10 08:05:35
【问题描述】:
我正在使用 MeteorJS 1.0.2.1 填充应用程序。
一开始,这是我的searchResults模板:
<template name="searchResults">
<div class="dummy-column">
<h2>Search Results</h2>
<ul>
{{#each results}}
<li>
{{city}} - {{state}}
</li>
{{/each}}
</ul>
</div>
</template>
这是处理一些事件并为searchResults模板提供帮助的脚本文件:
Template.searchResults.helpers({
results: function(){
console.log("reach here only 1 time !");
Meteor.subscribe('zips_results', key, function(){
return Zips.find().fetch();
});
}
});
var key = '';
Zips = new Meteor.Collection('zips');
$(document).ready(function() {
$('.morphsearch-input').keyup(function(){
key = $(".morphsearch-input").val();
});
});
所以我想要的是,每次我输入$('.morphsearch-input') 搜索输入时,我的应用程序都会通过调用返回相应的搜索结果:
Meteor.subscribe('zips_results', key, function(){
return Zips.find().fetch(); // And I've tested that this runs correctly
});
但问题是Template.searchResults.helpers.results 似乎只被调用一次(在加载开始时),这使得我的模板没有改变。
我仍然不知道为什么这不起作用。所以我希望你们能帮助我!非常感谢你们!
【问题讨论】:
-
我建议通读meteor.com 上的教程。订阅不应该进入 helpers,你应该使用 Blaze 的事件处理而不是直接使用 jQuery。
-
你能说得更具体点吗,比如我应该把订阅函数放在哪里,这样我的代码才能正常工作?
标签: javascript meteor render helpers