meteor,动态更改模板辅助数据

meteor,动态更改模板辅助数据,meteor,Meteor,我有一个小疑问,是否可以动态更改模板帮助器数据 这是我的模板 {{#each post}} <h4>{{postyname}}</h4> <h4>{{Headline}}</h4> <h4>{{Location}}</h4> {{/each}} 它在我的主页中显示结果,我在页面顶部有搜索栏,每当用户单击搜索按钮时,必须呈现相同的模板,但根据用户搜索使用不同的数据 我在我的onclick事件中尝试过这样的方式,但似乎不起作用

我有一个小疑问,是否可以动态更改模板帮助器数据

这是我的模板

{{#each post}}
<h4>{{postyname}}</h4>
<h4>{{Headline}}</h4>
<h4>{{Location}}</h4>
{{/each}}
它在我的主页中显示结果,我在页面顶部有搜索栏,每当用户单击搜索按钮时,必须呈现相同的模板,但根据用户搜索使用不同的数据

我在我的onclick事件中尝试过这样的方式,但似乎不起作用

'onclick #searchBtn':function()
{
    var all_posts=posts.find({'Headline': search},{sort: {createdAt: -1}}).fetch();

    Template.postDisplay.post=function(){

    return all_posts;
}
如何做到这一点?

我相信使用是您想要使用的:

在js文件的顶部创建一个变量

var _deps = new Tracker.Dependency;
var searchCriteria = {};
在助手中:

post:function() {
    _deps.depend(); // creates a dependency between the accessor of "post" and the _deps
    posts.find(searchCriteria,{sort: {createdAt: -1}}).fetch();
}
在按钮上单击:

'onclick #searchBtn':function() {
    searchCriteria = {'Headline': search};
    _deps.changed(); // notifying everyone that is dependent on _deps that it has changes
}

根据我从你的问题中看到的情况,我认为这应该能解决你的情况。如果我误解了您的问题,请告诉我。

为什么不使用会话变量呢?它们是反应性的,正是你所需要的

使用Session.set和Session.get将自动注册和激发依赖项,而不是手动处理依赖项

post:function()
{
    var searchCriteria = Session.get("searchCriteria") || {};
    posts.find(searchCriteria,{sort: {createdAt: -1}}).fetch();
}

'onclick #searchBtn':function()
{
    Session.set("searchCriteria", {'Headline': search});
}

在热代码重新加载后,会话变量也将被保留。变量不会。

工作和职位之间的相关性是什么?我只是很难看到你的助手与你的点击按钮之间的关系。您希望帖子或作业是动态的(或两者都是)?@Firo,抱歉编辑了这个问题这是关于StackOverflow上Meteor最重要的答案,非常感谢!顺便说一下,
Deps.Dependency已弃用,您可以使用
Tracker.Dependency取而代之。
post:function()
{
    var searchCriteria = Session.get("searchCriteria") || {};
    posts.find(searchCriteria,{sort: {createdAt: -1}}).fetch();
}

'onclick #searchBtn':function()
{
    Session.set("searchCriteria", {'Headline': search});
}