流星0.5.9 - Deps.Autorun fadein无法正常工作

时间:2013-05-08 09:18:35

标签: javascript jquery node.js meteor

我有以下代码:

Template.jobFlash.helpers({
    latest_job: function(){
        if(Session.get("latestJob")!=""){

            return JobsCollection.findOne({}, {sort: {'added_date': -1}});
        }
    }
});
Deps.autorun(function(){

    var job = JobsCollection.findOne({}, {sort: {'added_date': -1}});
    sortArr = [];
    sortArr['_id'] = "asc";
    var oldJob = Session.get("latestJob");

    if(job && oldJob !== job._id){
        Session.set("latestJob", job._id);
            $("#jobHolder").fadeIn(750).delay(10000).fadeOut(750);
    }
});

然后:

<template name="main">
    {{#isolate}}
        {{> otherStuff}}
    {{/isolate}}
    {{#isolate}}
        {{> jobHolder}}
    {{/isolate}}
</template>


<template name="jobHolder">
    <div id="jobHolder" style="width:100%; position:absolute; top:0; left:0; height:100%; background:#FFF; display:none;">
    {{#with latest_job}}
    {{#isolate}}
    <div>
        <h1>{{job_title}} - ({{job_type}})</h1>
        <h2>{{job_company}}<br/>
            &pound;{{job_pay}}<br/>
            {{job_short_location}}</h2>
        <div id="map-holder"></div>
    </div>
    {{/isolate}}
    {{/with}}
    </div>
</template>

当使用新行更新JobCollection时,应调用fadeIn - 并且当首次加载页面并触发自动运行时,整个代码块工作正常。但是,之后,如果更新了JobsCollection,则调用该函数,我可以看到javascript正在执行,但是fadeIn只是不起作用。为什么是这样?这几乎就像Autorun正在失去范围一样?

1 个答案:

答案 0 :(得分:0)

我有类似的问题。请尝试以下方法:

  1. Template.jobHolder.preserve(["#jobHolder"]);

  2. Meteor.defer

  3. 中运行动画代码