我对Meteor很陌生,我正在与arkham斗争:comments-ui。
这里简要介绍了我正在做的事情。我希望它不太详细。
我订阅了一个名为' articles'的已发布集合。
Articles = new Mongo.Collection("articles");
我正在通过此负载迭代,通过名为' articlepreview'的模板显示客户端中每篇文章的预览。
Template.body.helpers({
articles: function(){
return Articles.find({}, {sort: {createdAt: -1}});
}
});
我已将每篇文章的唯一ID添加到“更多”的自定义属性(数据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);
}
HELPER:
Template.articlefull.helpers({
articlebody: function () {
return Session.get('articlebody');
},
uniqueid: function(){
return Session.get('articleUID');
}
});
TEMPLATE:
<template name="articlefull">
<div id="article">
<p>{{{articlebody}}}</p>
</div>
<div id="comments" class="comment-section">
{{> commentsBox id=uniqueid}}
</div>
</template>
对我做错了什么的任何想法?如果我将{{uniqueid}}弹出到评论框正下方的模板中,它会显示正确的值,这意味着它会被拉过来,但是仍然存在问题......
PS:请告诉我,如果我以完全错误的方式解决这个问题。我确信有一种更简单的方法可以做我想做的事情,但正如我所说的,我对此很陌生。谢谢!答案 0 :(得分:1)
根据您对实施的详细说明,我认为由于Comments
集合缺少发布和订阅功能而导致出现此问题。
根据您的使用情况,您需要添加 Meteor.publish(name, func)
和 Meteor.subscribe(name, [arg1, arg2...], [callbacks])
功能。
Meteor.publish('allComments', function() {
return Comments.getAll();
});
Meteor.publish('articleComments', function(docId) {
return Comments.get(docId);
});
Meteor.subscribe('allComments');
Meteor.subscribe('articleComments', Session.get('articleUID'));