2017-05-09 17 views
1

テンプレートのonRendered機能内にjqueryを使用してスクリプトを挿入したいと思います。onrenderedテンプレート内の流星呼び出しjquery

この問題はjquery(およびGMAP)はページの更新にロードされないということであるコード

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()); 
         }); 
        } 
      }); 
     } 
    }); 

}); 

です。テンプレートを変更して(別のルートを読み込んで)このAdmin_usersテンプレートに戻ると、jqueryとgmapが読み込まれます。ページの読み込みにjqueryをロードするにはどうすればよいですか?

私はこの問題について、ここでSOでの質問をたくさん見てきたが、それらのどれも私のために働くように思わない(solution onetwothreefour

答えて

1

があった場合autorunにそのコードを配置する必要はありません再実行を引き起こす反応変数ではありません。また、複数回正しいものを再実行したくないのですか?その場合はautorunを削除してください。あなたができることは少し待つことです。

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

これは役に立ちますか?

+0

はい。それはうまくいった。 500 ms待つことなく、Meteor.setTimeout(()=> {doYourThing()}、0); –

+0

'Meteor.defer'の解決策がうまくいかなかったという不思議な点は、bcはsetTimeoutの便利な機能であり、遅延は0です。とにかく、私は助けることができてうれしい。 – tomsp

関連する問題