2016-08-18 70 views
1

我在template.onDestoyed中出現了一個錯誤和奇怪的行爲;無法調用View#從被銷燬的回調中訂閱

我有代碼爲無限滾動訂閱(它存儲在特殊的訂閱模板)它工作正常,直到我切換到另一個路由,並創建一個新的實例的訂戶模板。

代碼:

Template.subscriber.onCreated(function() { 
     var template = this; 
     var skipCount = 0; 
     template.autorun(function(c) { 
      template.subscribe(template.data.name, skipCount, template.data.user); 
      var block = true; 
      $(window).scroll(function() { 
       if (($(window).scrollTop() + $(window).height()) >= ($(document).height()) && block) { 
        block = false; 
        skipCount = skipCount + template.data.count; 
        console.log(template.data); 
        console.log("skip_count is "+skipCount); 
        template.subscribe(template.data.name, skipCount, template.data.user, { 
         onReady: function() { 
          block = true; 
         }, 
         onStop: function() { 
          console.log('route switched, subscribtion stopped'); 
         } 
        }); 
       } 
      }); 
     }) 
    }); 

當我一個頁面,用戶做工精細,在「向下滾動」當我在另一個頁面去和「向下滾動」首先我從老用戶模板數據(什麼是必須在理論上被破壞)。在第二次(再次向下滾動)用戶的新實例開始正常工作。

PIRNT SCREEN CONSOLE

我做錯了什麼?

回答

0

欠下! 來自流星論壇的好人幫助了我。 其實問題出在jquery.scroll事件。它在模板被破壞時沒有清理乾淨。 (這是一個錯誤?或者這是正常的行爲?)。我只需要解除在onDestroyed部分中的滾動事件。