我有以下代码:
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/>
£{{job_pay}}<br/>
{{job_short_location}}</h2>
<div id="map-holder"></div>
</div>
{{/isolate}}
{{/with}}
</div>
</template>
当使用新行更新JobCollection时,应调用fadeIn - 并且当首次加载页面并触发自动运行时,整个代码块工作正常。但是,之后,如果更新了JobsCollection,则调用该函数,我可以看到javascript正在执行,但是fadeIn只是不起作用。为什么是这样?这几乎就像Autorun正在失去范围一样?
答案 0 :(得分:0)
我有类似的问题。请尝试以下方法:
Template.jobHolder.preserve(["#jobHolder"]);
在Meteor.defer