使用Blaze in Meteor JS进行实时搜索时取消选中复选框

时间:2015-01-22 18:31:18

标签: 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){
    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>

在这里,我尝试过滤(隐藏)不在查询中的条目。

模拟实时搜索到目前为止工作正常:您在输入文本中键入内容并过滤条目。 问题是当你搜索某些东西并检查一个条目时。 然后,如果您搜索另一个术语并检查该术语,则您的第一个选中的条目将会消失。 我不想要这种行为。 我想搜索一个条目,检查它,搜索另一个条目,检查它,等等。

我认为这个问题与重新加载模板有关,但我不知道如何使其工作。 我想在Session变量中保存已检查的条目,但这将是我的最后一个选项。 我也尝试了matteodem:easy-search,但同样的问题也发生了。

0 个答案:

没有答案