【发布时间】:2014-02-06 23:24:49
【问题描述】:
我正在创建一个流星应用程序,该应用程序在页面的左半部分有一个可见的帖子列表,在右侧有一个隐藏的显示容器。用户点击帖子标题,显示容器变为页面右侧并显示完整帖子。现在,显示完整帖子的容器最初是隐藏的,只是其元素填充了车把表达式。如果您单击另一个帖子,相同的显示容器会保持打开状态,只是其内容发生了变化。
点击帖子
Template.postsList.events({
'click .post': function (e, template) {
e.preventDefault();
Session.set('selectedPost', this._id);
}
});
车把表达式示例
Template.postDisplay.title = function () {
return Posts.findOne(Session.get('selectedPost')).title
}
除了显示容器的反应性之外,一切都运行良好。如果数据库中的某些内容发生更改(无论是添加的评论、标题的更改等),则显示将再次隐藏,我必须重新单击该帖子。 postsList 模板的所有值都正常且无缝地更新,没有任何闪烁或任何东西。
有没有办法让显示容器的值更新,同时防止它被隐藏?
这就是我展示容器的方式。只是常规的显示和隐藏。
在文件加载时
$('#post-display-container').hide();
点击元素
$('.title').click(function () {
$('#post-display-container').show()
});
postDisplay 模板的示例。当然,我没有做全部事情。
<template name="postDisplay">
{{#each posts}}
<h3 class='title'>{{title}}</h3>
<p class='body'>{{body}}</p>
{{/each}}
</template>
模板助手
Template.postDisplay.helpers({
posts: function () {
return Posts.find(Session.get('selectedPost'));
}
})
【问题讨论】:
-
这应该很容易。显示容器的方式可能存在错误。你能展示一下你用来让它可见的代码吗?
-
@HubertOG 好的,我更新了信息。
标签: meteor