2016-04-03 37 views
0

我無法正確導入dragula,使用ahref:dragula包。它工作得很好,直到我手動刷新瀏覽器頁面。當我這樣做,我得到以下錯誤:onRendered觸發器異常來自追蹤器afterFlush - 函數ReferenceError:沒有定義dragula

debug.js:41 Exception from Tracker afterFlush function: 
debug.js:41 ReferenceError: dragula is not defined 
    at .<anonymous> (tasks.js:52) 
    at blaze.js:3302 
    at Function.Template._withTemplateInstanceFunc (blaze.js:3643) 
    at fireCallbacks (blaze.js:3298) 
    at .<anonymous> (blaze.js:3391) 
    at blaze.js:1752 
    at Object.Blaze._withCurrentView (blaze.js:2183) 
    at blaze.js:1751 
    at Object.Tracker._runFlush (tracker.js:505) 
    at onGlobalMessage (setimmediate.js:102) 

讀書的時候,我偶然發現了這個question/answer,這讓我想到的路線可能需要某種形式的waitOn,我只是不明白這究竟我應該等待。以下是我爲了便於閱讀而清理的一些代碼段,希望我沒有刪除任何重要信息。所以,這裏是我的路線定義目前的樣子。

Router.route('/', function() { 
    this.render('Home'); 
}); 

而且模板...

<template name="home"> 
    {{ #if currentUser }} 
    {{> tasks }} 
    {{ /if }} 
</template> 

<template name="tasks"> 
    <div class="row"> 
     <div id="activeTasks"> 
     <!-- stuff --> 
     </div> 
    </div> 
    </div> 
</template> 

最後,onRendered功能本身。

Template.tasks.onRendered(function() { 
    this.drake = dragula([this.find('#activeTasks')]); 
}); 

回答

0

基於this discussion,我已經發現,通過在Meteor.setTimeout功能dragula定義包括在包裝解決方法。

所得onRendered功能:

Template.tasks.onRendered(function() { 
    var self = this; 
    Meteor.setTimeout(function() { 
    self.drake = dragula([self.find('#activeTasks')]); 
    }, 250); 
});