小编Tho*_*lor的帖子

防止谷歌地图JS由Rails Turbolinks多次执行

我目前正在处理Rails应用程序,它收到以下错误:

您已在此页面上多次添加Google Maps API.这可能会导致意外错误.

经过一番研究后,我发现Turbolinks造成了这个问题.当link_to点击全部由谷歌地图创建的DOM元素都在DOM中保留.当渲染新页面时,会添加另一组Google Map DOM元素,从而导致重复和错误.

我可以通过简单地添加'data-no-turbolink' => true到我的方式来快速解决这个问题,link_to但这会破坏使用Turbolinks的目的,因为它会强制刷新.

我想知道是否有一个潜在的解决方法来阻止这种复制而不关闭Turbolinks?

map.js:

var initMap = function initMap() {

  if (typeof mapLatLng != "undefined") {

    // we can use this to set the map zoom
    // in different places. 
    // use: window.setZoom = 12;
    if (typeof setZoom ==! "undefined") {
      var mapZoom = setZoom;
    } else {
      var mapZoom = 14;
    }

    var map = new google.maps.Map(document.getElementById('map'), {
      zoom: mapZoom,
      center: mapLatLng,
      disableDefaultUI: true,
      scrollwheel: …
Run Code Online (Sandbox Code Playgroud)

javascript google-maps ruby-on-rails turbolinks

14
推荐指数
3
解决办法
3476
查看次数