我想在模板上的jquery
函数中使用onRendered
包含一个脚本。
这是代码
Template.Admin_users.onRendered(function(){
var instance = this;
instance.autorun(function(){
if($){
console.log($);
console.log("jquery");
$("#Users.collection-item").click();
$.getScript(
"http://maps.googleapis.com/maps/api/js?sensor=false&libraries=places"
//'https://maps.googleapis.com/maps/api/js?libraries=places'
, function(){
console.log("loaded gmap");
var acs = $(".citycomplete").length;
for(var i = 0 ;i<acs;i++){
var autocomplete = new google.maps.places.Autocomplete($(".citycomplete")[i], {});
autocomplete.id = $(".citycomplete")[i].id;
google.maps.event.addListener(autocomplete, 'place_changed', function() {
var place = autocomplete.getPlace();
$("input[name=lat]#"+autocomplete.id).val(place.geometry.location.lat());
$("input[name=lng]#"+autocomplete.id).val(place.geometry.location.lng());
});
}
});
}
});
});
问题是jquery
(和gmap)没有加载页面刷新。如果我更改模板(加载其他路线),然后返回此Admin_users
模板,则jquery
和gmap将加载。如何在页面加载时加载jquery
?
我在这里看到了很多关于这个问题的问题,但它们似乎都不适用于我(solution one two three four)
答案 0 :(得分:1)
如果没有可以触发重新运行的反应变量,则无需将该代码放入autorun
。你也不希望它多次重新运行正确吗?如果是,请删除autorun
。你能做的就是等一下。
Template.Admin_users.onRendered(function(){
Meteor.setTimeout(()=>{doYourThing()}, 500);
});
这有帮助吗?