gpt4 book ai didi

javascript - MeteorJS - 为什么数据更改时我的页面不重新渲染?

转载 作者:行者123 更新时间:2023-12-03 11:05:34 28 4
gpt4 key购买 nike

我正在使用 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 似乎只被调用一次(在加载开始时),这使得我的模板没有改变。我仍然不知道为什么这不起作用。所以我希望你们能帮助我解决这个问题!非常感谢你们!

最佳答案

首先将搜索输入文本模板添加到您的搜索结果模板中。它必须位于单独的模板中,请阅读 here为什么。

搜索结果.js

<template name="searchResults">
{{>searchInput}}
<div class="dummy-column">
<h2>Search Results</h2>
<ul>
{{#each results}}
<li>
{{city}} - {{state}}
</li>
{{/each}}
</ul>
</div>

使用 session 使您的模板更具交互性。在下面的模板中,我们获取输入的文本并将其存储在 session 变量中。

搜索输入.js

Template.searchInput.events({
'keyup input.search-zip': function (event, template) {
event.preventDefault();
Session.set('searchZip', event.currentTarget.value);
}
});

对应的模板必须是:

搜索输入.html

<template name="searchInput">
<div class="form-group">
<input type="text" class="form-control search-zip" placeholder="Search for zip...">
</div>
</template>

之后将上述内容放入 searchResults javascript 文件中。更改您的订阅(Meteor.subscribe("zips"))以将所有邮政编码带入 miniMongo,然后在结果帮助器中查找用户搜索的数据。

搜索结果.js

//This brings all zips into miniMongo and then into helper you 
//make the query while the user typing
Meteor.subscribe("zips");
Template.searchResults.helpers({
results: function() {
return Zips.find({youKey:Session.get('searchZip')})
}
});

希望对你有一点帮助

关于javascript - MeteorJS - 为什么数据更改时我的页面不重新渲染?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27874148/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com