流星:使用弹出窗口&情态动词

时间:2014-11-02 08:18:55

标签: jquery templates meteor addclass

我有一个代表公司文章的模板。

<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")

        }

    })

问题是我必须在文章上点击两次。

  • 第一次点击将模板注入dom
  • 第二次点击会添加课程&#34;有效&#34;。

我在这里做错了什么?

THX,

1 个答案:

答案 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

    }

所以唯一改变的是||真实的位,现在一切都按预期工作。我不知道是否有另一种解决方案。