【问题标题】:onRendered triggers Exception from Tracker afterFlush - function ReferenceError: dragula is not definedonRendered 触发来自 Tracker afterFlush 的异常 - 函数 ReferenceError:dragula 未定义
【发布时间】:2016-04-15 01:43:57
【问题描述】:

我无法正确导入 Dragula,使用 ahref: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')]);
});

【问题讨论】:

    标签: meteor iron-router


    【解决方案1】:

    基于this discussion,我找到了一种解决方法,即在Meteor.setTimeout 函数中通过dragula 定义进行包装。

    生成的onRendered 函数:

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

    【讨论】:

      猜你喜欢
      • 2016-04-01
      • 2018-03-15
      • 2017-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多