首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >流星:使用弹出窗口和调制解调器

问流星:使用弹出窗口和调制解调器
EN

Stack Overflow用户
提问于 2014-11-02 08:18:55
回答 1查看 1.1K关注 0票数 1

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

代码语言:javascript
复制
<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>

​

此模板从此助手接收数据:

代码语言:javascript
复制
    Template.articleDetail.articleData = function(){

        return articleDB.findOne({_id:Session.get("clickedOnArticle")})

    }

文章显示为弹出窗口。当用户单击一篇文章(从文章列表中)时,上面的详细文章(模板)将显示为display:block。

我利用这一事件:

代码语言:javascript
复制
    Template.articleOverview.events({

        "click .article":function(event, template){

            Session.set("clickedOnArticle", event.currentTarget.getAttribute("data-article-id"))

            $(".adArticle").addClass("active")

        }

    })

问题是我必须在一篇文章上点击2次。

  • 第一个单击将模板注入dom中。
  • 第二次单击添加了"active“类。

我在这里做错什么了?

thx,

EN

回答 1

Stack Overflow用户

发布于 2014-11-02 09:34:28

解决办法相当简单:

{{#with articleData}块最初为false,因此模板的html没有呈现到页面。

当我单击一篇文章时,{#with articleData}返回为true (因为其中现在有数据),但我不得不再次单击以使jquery启动(以添加类.active)。

因此,关键是在加载而不是单击时在页面中获取adArticles模板。为此,如果来自db的查询返回false,则只返回true。

代码语言:javascript
复制
    Template.adArticles.articleData = function(){

        return tikiDB.findOne({_id:Session.get("clickedOnArticle")}) || true

    }

所以唯一改变的就是“真”位,现在一切都如愿以偿了。不过,我不知道是否有另一种解决办法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26697358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档