流星调用jrenery在一个onrendered模板内

时间:2017-05-09 07:01:25

标签: javascript jquery templates meteor

我想在模板上的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

1 个答案:

答案 0 :(得分:1)

如果没有可以触发重新运行的反应变量,则无需将该代码放入autorun。你也不希望它多次重新运行正确吗?如果是,请删除autorun。你能做的就是等一下。

Template.Admin_users.onRendered(function(){
    Meteor.setTimeout(()=>{doYourThing()}, 500);
});

这有帮助吗?