我有一个代表公司文章的模板。
<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")
}
})问题是我必须在一篇文章上点击2次。
我在这里做错什么了?
thx,
发布于 2014-11-02 09:34:28
解决办法相当简单:
{{#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
}所以唯一改变的就是“真”位,现在一切都如愿以偿了。不过,我不知道是否有另一种解决办法。
https://stackoverflow.com/questions/26697358
复制相似问题