如何正确地使流星模板具有反应性?
我的应用程序显示项目的集合,我想添加项目细分视图。如何正确地使流星模板具有反应性?
我只能够得到一半的解决方案的工作的;我找到相应的文件,并使用该文档呈现模板:
var item = Items.findOne('my_id');
$('#main').html(
Meteor.render(function() {
return Templates.item(item)
}));
这成功地使个别项目和相应的事件绑定。
这里的擦,模板没有反应!如果我使用关联的事件处理程序或从控制台更改其数据,则模板不会更新。但是,页面刷新将显示更新的数据。
我是流星noobie,所以它可能是非常简单的东西。任何帮助将不胜感激。
在我看来,你没有使用他们真正打算成为的模板。
流星的应用程序与主HTML标记,只能在你的应用程序中存在一旦开始..
<head>
<title>My New Fancy App</title>
</head>
<body>
{{>templateName}}
</body>
然后添加模板..
<template name="templateName">
{{#each items}}
template or relevant html goes here..
{{/each}}
</template>
现在你需要一个模板帮手为您的{{#each items}}帮助程序提供数据。
Template.templateName.helpers({
items: function(){ return Items.find({}) }
});
所有这些在第e客户端..
然后,你需要一个集合,集合应该在客户端和服务器上定义。
Items = new Meteor.Collection('items');
只要您的收藏中有记录,现在应该可以工作。
既然你希望只希望呈现一个单一的文件,你可以改变助手和模板稍稍..
第一助手变为:
Template.templateName.helpers({
item: function(){ return Items.findOne() }
});
然后模板可以参考的价值返回的文档通过文档,所以我们改变了我们的模板:
<template name="templateName">
{{item.propertyName}}
</template>
感谢您的回答。不过,我正在寻找渲染项目集合的单个成员。这与Meteor惯例不符? – pdoherty926
你去了哪里,我已经更新了我的答案,以展示如何将集合中的单个文档渲染为模板。希望这可以帮助。 –
这可能是因为你有一个超过右括号? '返回Templates.item(项))'应该是'返回Templates.item(项目)' –
对不起,这只是一个错字。现在更新问题。 – pdoherty926