来自回调的饲料助手

时间:2017-04-17 22:38:31

标签: meteor

我正在尝试在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;
    });
  }
});

1 个答案:

答案 0 :(得分:1)

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

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

当你的方法异步返回时,Meteor会被动地更新。