从流星异步函数客户端传递数据

时间:2016-07-08 17:36:38

标签: asynchronous meteor client

我正在尝试将数据从异步函数发送到html页面。我已经成功使用了Meteor的wrapAsync,我可以在控制台中记录我想要的数据数组。但是,当我返回时,数据不会传播到html。当我将数据阵列从控制台粘贴到我的body.js文件中时,一切正常。所以有一些关于我如何返回有缺陷的对象。任何提示赞赏!

Body.js文件

import { Meteor } from 'meteor/meteor';

import { Template } from 'meteor/templating';

import { multichainuser } from '../api/permissions.js';

import './body.html';

Template.body.helpers({
  permissions: function(){
    var information = {};
    Meteor.call('mListPermissions', function(err, result){
      console.log(result);
      return result;     
    });
  }, 
});

body.html:

<body>
  <div class="container">
    <header>
      <h1>Permissions</h1>
    </header>

    <ul>
      {{#each permissions}}
        {{> permission}}
      {{/each}}
    </ul>
  </div>
</body>

<template name="permission">
  <li>{{address}}</li>
  <li>{{type}}</li>
</template>

permissions.js

import { Meteor } from 'meteor/meteor';

var multichainuser = require("multichain-node");

Meteor.methods({
  mListPermissions: function() {
    var lPSync=Meteor.wrapAsync(multichainuser.listPermissions, multichainuser);
    var result = lPSync({});
    return result;
  }
});

1 个答案:

答案 0 :(得分:2)

有几种方法可以解决这个问题。请查看反应方法包:https://github.com/stubailo/meteor-reactive-method

另一个选择是使用反应变量。在模板的oncreated中,您可以创建一个反应变量。然后你调用回调更新反应变量的方法。在帮助器中,您需要做的就是从反应变量中获取值。