onRendered triggers Exception from Tracker afterFlush - function ReferenceError: dragula is not defined
onRendered triggers Exception from Tracker afterFlush - function ReferenceError: dragula is not defined
我在使用 ahref:dragula 包正确导入 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)
四处阅读,我偶然发现了这个 ,这让我觉得这条路线可能需要某种 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')]);
});
基于 this discussion,我找到了一个变通方法,即在 Meteor.setTimeout
函数中通过 dragula 定义进行包装。
生成的 onRendered
函数:
Template.tasks.onRendered(function() {
var self = this;
Meteor.setTimeout(function() {
self.drake = dragula([self.find('#activeTasks')]);
}, 250);
});
我在使用 ahref:dragula 包正确导入 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)
四处阅读,我偶然发现了这个 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')]);
});
基于 this discussion,我找到了一个变通方法,即在 Meteor.setTimeout
函数中通过 dragula 定义进行包装。
生成的 onRendered
函数:
Template.tasks.onRendered(function() {
var self = this;
Meteor.setTimeout(function() {
self.drake = dragula([self.find('#activeTasks')]);
}, 250);
});