Javascript 在Meteor JS中使用Blaze进行实时搜索时取消选中复选框
我正在尝试用Meteor JS模拟一个实时搜索(顺便说一句,任务异常艰巨!) 这在Javascript 在Meteor JS中使用Blaze进行实时搜索时取消选中复选框,javascript,meteor,meteor-blaze,Javascript,Meteor,Meteor Blaze,我正在尝试用Meteor JS模拟一个实时搜索(顺便说一句,任务异常艰巨!) 这在client.js中: Template.newDiagnostic.events({ "keyup .entry-search": function(e) { Session.set("search-query", e.currentTarget.value) } }) Template.registerHelper("searchQuery", function(value){
client.js中:
Template.newDiagnostic.events({
"keyup .entry-search": function(e) {
Session.set("search-query", e.currentTarget.value)
}
})
Template.registerHelper("searchQuery", function(value){
var query = new RegExp(Session.get("search-query"))
return query.test(value)
})
Template.newDiagnostic.helpers({
symptoms: function() {
return Symptoms.find({})
}
})
基本上,我有一个事件,观察搜索输入中的keyup,更改会话变量。
接下来,我注册了一个助手来检查给定的字符串是否与该会话变量匹配(RegExp)。
最后,助手仅提供数据
然后,我的HTML中有以下内容:
<template name="newDiagnostic">
<input type="text" class="form-control entry-search" placeholder="Filtrar por nome">
{{#each symptoms}}
{{#if searchQuery name}}
<div class="checkbox">
<label>
<input class="checkbox-symptoms" type="checkbox" value="{{_id}}"> {{name}}
</label>
</div>
{{/if}}
{{/each}}
</template>
{{{#每个症状}
{{#如果搜索查询名称}
{{name}}
{{/if}
{{/每个}}
在这里,我尝试过滤(隐藏)不在查询中的条目
到目前为止,模拟实时搜索工作正常:您在输入文本中键入一些内容,条目将被过滤。
问题是当您搜索某个内容并检查条目时。
然后,如果您搜索另一个术语并检查该术语,您的第一个选中条目将消失。
我不要这种行为。
我想搜索一个条目,检查它,搜索另一个条目,也检查它,等等
我认为这个问题与重新加载模板有关,但我不知道如何使其工作。
我曾考虑将选中的条目保存在会话变量中,但这将是我的最后一个选项。
我也尝试过matteodem:easy search
,但同样的问题也发生了。为什么不获取当前的“已检查”值,存储在每个用户的数组中,并显示在不同的“{{each}}”上,然后在复选框列表下显示它们,如“checked by you”或类似的东西,@Ethaan。谢谢你的回复。我希望避免保存选中的条目以供以后查阅。。。我首先在寻找一个更“本地”的解决方案,即只使用blaze或模板本身的解决方案。但是,当然,如果这是不可能的,我将硬编码一个解决方案,将选中的条目保存在会话变量或类似的东西中。无论如何,谢谢你。