gpt4 book ai didi

javascript - Meteor.js 模板在变量赋值后不更新

转载 作者:行者123 更新时间:2023-11-30 13:01:54 25 4
gpt4 key购买 nike

我正在使用 Meteor 构建一个免费的电视跟踪应用程序,但在这个过程中我似乎遇到了瓶颈。我的模板的一部分包含以下内容:

<template name="results">
<div class="row">
<div class="span6 offset6">
<h4>Search Results</h4>
<ul>
{{#each series}}
<li><a href="http://thetvdb.com/?tab=episode&seriesid{{tvdbseriesid}}&lid={{tvdblid}}">{{seriesname}}</li>
{{/each}}
</ul>
</div>
</div>
</template>

然后,在我的客户端 js 代码中,我这样做:

Template.search.events({
'click #search' : function(evt) {
evt.preventDefault();

var query = $('#query').val();
if (query) {
Meteor.call('queryshow', query, function(error, result) {
Template.results.series = result;
console.log(Template.results());
});
}
}
});

“queryshow”服务器方法只是一个集合查询方法,它返回一个包含我的模板需要的数据的对象。

但问题是:更改没有反射(reflect)在浏览器窗口中。我似乎无法弄清楚原因,因为下面显示的 console.log(Template.results()) 调用返回了我期望的正确 html。

我该如何解决这个问题?我尝试查看 Meteor 的文档,但似乎找不到强制重新呈现模板的函数。任何帮助将不胜感激!

最佳答案

Template.results.series 应该是一个返回系列的函数,而不是直接设置为您要使用的系列。这样,当 Meteor 运行获取系列的函数时,它可以注册该函数所依赖的内容,然后在任何依赖项发生变化时重新运行该函数。

为您的信息注册依赖项的最简单方法是使用Session 对象。所以你的代码看起来像这样:

Template.results.series = function () { return Session.get('resultsSeries'); }

Meteor.call('queryshow', query, function (err, res) {
// handle the error if it's there
// ...
// Then set the session variable, which will re-run anything that depends on it.
Session.set('resultsSeries', res)
}

关于javascript - Meteor.js 模板在变量赋值后不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17130718/

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