【问题标题】:feed helper from a callback来自回调的提要助手
【发布时间】:2017-04-19 11:32:35
【问题描述】:

我正在尝试在 Meteor 中实现文件浏览器。用户可以浏览一些网络文件夹并将它们添加到集合中以进行进一步处理。

这是我的简单模板,显示“..”和给定目录中的文件夹

<template name="folderBrowser">
  <ul>
    <li class="js-browseUp">..</li>
    {{#each folder}}
    <li class="js-selectFolder">{{.}}</li>
    {{/each}}
  </ul>
</template>

获取文件夹内容的服务器方法

'displayFolderContent'(folderName) {
    var folders = fs.readdirSync(folderName)
    console.log(folderName +':'+ folders);
    return folders;
}

还有我的尝试(不工作)。我相信我正在将一个函数传递给助手,并且该方法是异步的,所以我不能直接传递“d”,但不知道如何解决这个问题。

Template.folderBrowser.helpers({
  folder: function() {
    Meteor.call('displayFolderContent', myFolder, function(e, d) {
      console.log(d); // logs an array of folder content correctly into browser console
      return d;
    });
  }
});

【问题讨论】:

    标签: meteor


    【解决方案1】:

    我不确定在模板助手中使用 Meteor 方法是否是个好主意。

    一个简单的解决方案是使用中间ReactiveVar。创建模板后,调用方法并更新回调中的ReactiveVar。然后在您的 folder 助手中,只需返回 ReactiveVar 内容。

    当你的方法异步返回时,Meteor 会响应式更新。

    【讨论】:

    • 同意,从助手调用方法绝对不是一个好主意。 OP,这是正确的解决方案。
    • 几个小时后我也达到了这一点。我正在使用 ReactiveVar 和一些 ReactiveArray 包。效果很好!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2019-08-05
    相关资源
    最近更新 更多