流星模板更新

ims*_*vko 7 javascript meteor

我是Meteor的新手.我构建了简单的测试并且很容易陷入困境.我的网页内容仅在数据库更改时更新,但如何在函数返回结果更改时强制更新?以下是我的应用程序代码的一部分:

client.js:

Meteor.subscribe("tasks");

var search_query = "";

Template.page.tasks = function() {
    return Tasks.find({title: {$regex: search_query}});
};

Template.task.events({
    'click .checkmark': function() {
        Tasks.update({_id: this._id}, {$set: {done: !this.done}});
    }
});

Template.page.events({
    'keyup .search': function() {
        search_query = $(".search").val();
    }
});
Run Code Online (Sandbox Code Playgroud)

todo.html:

<head>
  <title>Todo list</title>
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>

<body>
  {{> page}}
</body>

<template name="page">
    <div class="tasks">
        <h1>Collections TODOs</h1>
        <input type="text" class="search" placeholder="Search...">
        {{#each tasks}}
            {{> task}}
        {{/each}}
    </div>
</template>

<template name="task">
    <div class="task well well-small">
        <button type="button" class="close cancel">&times;</button>
        <h3>
            {{#if done}}
                <button type="button" class="checkmark done">&#10003;</button>
            {{else}}


    <button type="button" class="checkmark muted">&#10003;</button>
        {{/if}}
        {{title}}
    </h3>
    <div class="creator muted">{{creator}}</div>
    <p>{{description}}</p>
</div>
Run Code Online (Sandbox Code Playgroud)

所以现在,我希望每当用户在输入中输入内容时,搜索框变量search_query会发生变化,现在会Template.page.tasks返回不同的结果.但没有真正的更新.您可以在http://slava.meteor.com上查看应用程序

Tim*_*Dog 8

您需要一个反应变量来再次动态运行搜索.做search_query一个Session像这样的变量

Template.page.tasks = function() {
    return Tasks.find({title: {$regex: Session.get("search_query") }});
};
Run Code Online (Sandbox Code Playgroud)

在你的活动中:

Template.page.events({
   'keyup .search': function() {
        Session.set("search_query", $(".search").val());
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 有关在刷新页面时保留用户输入的方法,请参阅[preseve-input](http://docs.meteor.com/#template_preserve). (2认同)