2016-04-03 4 views
0

У меня возникли проблемы с правильной загрузкой dragula, используя пакет ahref:dragula. Он отлично работает, пока я не обновляю вручную страницу браузера. Когда я делаю, я получаю следующее сообщение об ошибке:onRendered triggers Исключение из Tracker 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, я нашел обходной путь, который состоит в упаковке по Dragula определению в Meteor.setTimeout функции.

Полученный onRendered функции:

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