【发布时间】:2015-12-08 03:28:17
【问题描述】:
我对 Meteor 还很陌生,我正在努力使用 arkham:cmets-ui。
以下是我正在做的事情的简要概述。希望不要太详细。
-
我订阅了一个名为“文章”的已发布集合。
Articles = new Mongo.Collection("articles"); -
我在加载时迭代此内容,以通过名为“articlepreview”的模板在客户端显示每篇文章的预览。
Template.body.helpers({ articles: function(){ return Articles.find({}, {sort: {createdAt: -1}}); } }); -
我已将每篇文章的唯一 ID 添加到每个预览底部的“阅读更多”按钮的自定义属性 (data-id) 中。
<template name="articlepreview"> <h2>{{head}}</h2> <p>{{{summary}}}</p> <p class="readmore" data-id="{{_id}}">Read more</p> </template> -
我为这个按钮添加了一个事件监听器,它获取自定义属性并调用一个函数来显示被点击的完整文章,并设置一个具有唯一 ID 的 Session 变量。
"click .readmore": function (event) { event.preventDefault(); var articleID = event.target.getAttribute("data-id"); Session.set('articleUID',articleID); Meteor.call("loadArticle", articleID); }- 此函数通过帮助程序填充名为“articlefull”的模板;本质上,我使用 Session.set 来设置一个包含整篇文章文本的变量,方法是使用 findOne 和已设置的唯一 ID。
助手:
Template.articlefull.helpers({
articlebody: function () {
return Session.get('articlebody');
},
uniqueid: function(){
return Session.get('articleUID');
}
});
模板:
<template name="articlefull">
<div id="article">
<p>{{{articlebody}}}</p>
</div>
<div id="comments" class="comment-section">
{{> commentsBox id=uniqueid}}
</div>
</template>
- 此模板的一部分是注释框。我正在设置评论框的 ID 以匹配加载的文章的 ID,但此时发生了一些非常奇怪的事情:cmets 框允许我输入评论并单击“添加”,但一旦我这样做,评论会短暂闪烁在屏幕上,然后消失。
对我做错了什么有什么想法吗?如果我将 {{uniqueid}} 弹出到评论框下方的模板中,它会显示正确的值,这意味着它正在通过,但仍然有问题......
PS:如果我以完全错误的方式处理这件事,请告诉我。我确信有一种更简单的方法可以做我想做的事情,但正如我所说,我对此并不陌生。谢谢!
【问题讨论】:
标签: javascript meteor