我有一个代表公司文章的模板。
<template name="articleDetail">
<section class="articles">
{{#with articleData}}
<article>
<div>
<div>
<div class="logo">{{logo}}</div>
<div class="name">{{name}}</div>
</div>
</div>
</article>
{{/with}}
</section>
此模板从此助手接收数据:
Template.articleDetail.articleData = function(){
return articleDB.findOne({_id:Session.get("clickedOnArticle")})
}
文章显示为弹出窗口。当用户点击文章(从文章列表中)时,详细文章(上面的模板)显示为display:block。
我使用此事件:
Template.articleOverview.events({
"click .article":function(event, template){
Session.set("clickedOnArticle", event.currentTarget.getAttribute("data-article-id"))
$(".adArticle").addClass("active")
}
})
问题是我必须在文章上点击两次。
我在这里做错了什么?
THX,
答案 0 :(得分:2)
解决方案很简单:
{{#with articleData}}块最初为false,因此模板的html未呈现给页面。
当我点击一篇文章时,{{#with articleData}}返回true(因为现在里面有数据)但我必须再次点击才能触发jquery(添加类.active)
所以关键是要在加载页面中获取adArticles模板而不是单击。为此,如果来自db的查询返回false,则返回true。
Template.adArticles.articleData = function(){
return tikiDB.findOne({_id:Session.get("clickedOnArticle")}) || true
}
所以唯一改变的是||真实的位,现在一切都按预期工作。我不知道是否有另一种解决方案。