MeteorJS 无限页面刷新

Posted

技术标签:

【中文标题】MeteorJS 无限页面刷新【英文标题】:MeteorJS Infinite Page Refresh 【发布时间】:2014-03-12 00:32:23 【问题描述】:

我正在开发一个小应用程序,该应用程序使用他们的地图 API(加上他们的地理定位 API)在谷歌地图上绘制点。

这是我的代码:

map.js:

Template.gmap.rendered = function() 
    if(! Session.get('map'))
        gmaps.initialize();

  gmaps.mapCities();


Template.gmap.destroyed = function() 
    Session.set('map', false);

gmap.js:

gmaps = 
    map: null,

    initialize: function() 
        console.log("[+] Initializing Google Maps...");

        var mapOptions = 
            zoom: 4,
            center: new google.maps.LatLng(38.7, -95),
            mapTypeId: google.maps.MapTypeId.ROADMAP,
            mapTypeControl: false,
            streetViewControl: false,
            draggable: false,
            zoomControl: true,
            zoomControlOptions: 
                style: google.maps.ZoomControlStyle.SMALL
            
        ;

        this.map = new google.maps.Map(
            document.getElementById('map-canvas'),
            mapOptions
        );

        this.map.setOptions(styles: window.mapStyles);

        Session.set('mapLoaded', true);
    ,

    mapCities: function()
      var t = this;
      console.log("[+] city mapping begins");
      $.each(cities, function(index, c)
        city_name = c.split(", ").join("+");
        city = Cities.findOne(city_name: city_name);

        if(!city) 
          console.log("NO CITY FOUND. SAVING DA CITY: " + city_name);

          Meteor.call("retrieveLatLng", city_name, function(error, json)
            results = json.data.results[0];
            location = results.geometry.location;
            id = createCity(city_name, location);
            city = Cities.findOne(_id: id);
            t.addMarker(city, city.id);
          );
         else 
          t.addMarker(city, city.id);
        

      )
    ,

    _parseGeoLocation: function(job) 
        var location, t = this;

        Meteor.call("retrieveLatLng", job.address, function(error, json)
            results = json.data.results[0];
            location = results.geometry.location;
            t.addMarker(location, job.id, true);
        );
    ,

    addMarker: function(marker, id, update) 
        var gLatLng = new google.maps.LatLng(marker.lat, marker.lng);

        if(typeof(update) !== "undefined" && update) 
          Jobs.update(
            _id: id,
            $set: lat: location.lat, lng: location.lng
          );
        

        var gMarker = new google.maps.Marker(
            position: gLatLng,
            map: this.map,
            title: marker.title,
            icon: 'http://maps.google.com/mapfiles/ms/icons/blue-dot.png'
        );

        return gMarker;
    ,

    jobExists: function(jvid) 
        return Jobs.findOne(jvid: id);
    

main.js:

if (Meteor.isServer) 

  Meteor.methods(
    retrieveJobs: function(url)
      this.unblock();
      var url = url + "&cn=100";
      return HTTP.get("http://api.us.jobs/?key=API_KEY_HERE&" + url);
    ,
    retrieveLatLng: function(address)
      this.unblock();
      return HTTP.get("https://maps.googleapis.com/maps/api/geocode/json?address=" + address + "&components=country:US&sensor=false&key=API_KEY_HERE");
    
  );

当我加载页面时,页面大约每 2 秒自动刷新一次,并且 url 看起来像:http://localhost:3000/[object%20Object]... 不知道我做错了什么

【问题讨论】:

【参考方案1】:

您正在设置变量location,即window.location。因此,您告诉浏览器替换其位置/重定向到位置对象的方式。 (因此,为什么您将 [object Object] 视为您被重定向到的位置)

如果您为 location 变量使用不同的名称,例如 var location_var,应该没问题。

【讨论】:

以上是关于MeteorJS 无限页面刷新的主要内容,如果未能解决你的问题,请参考以下文章

location.reload()不断刷新我的页面

iphone微信后退不刷新的问题

Flutter 扩展NestedScrollView (三)下拉刷新的解决

【请教】关于 仿新浪微博下拉刷新Listview!!

页面刷新 整个页面刷新和局部刷新

easyUI刷新页面问题