将数据从铁路由器DATA功能传输到模板

时间:2015-07-19 10:47:03

标签: javascript meteor iron-router

所以我有这个数据上下文,我抓住了,无法弄清楚如何将它传递给模板。任何人都可以向我展示或指导一个例子吗?我是否需要一个模板帮助器,我将再次进入数据库以检索数据,因为我已经在铁路由器中有数据上下文...?

ROUTER.js

Router.route("/employer", {
  name:"employer",
  template:"employer",
  layoutTemplate:'employerLayout',
  // controller:"ProfileController",
    data: function(){
      var currentuser = Meteor.userId();
      Meteor.call("getEmployer", currentuser, function(error, result){
        if(error){
          console.log("error", error);
        }
        if(result){
           return result;
        }
      });

    },

EMPLYER.html

<template name="employer">
  <h1> Employer</h1>

  <h2>{{result}}</h2>

</template>

COLLECTION

meteor:PRIMARY> db.employer.find().pretty()
{
    "_id" : "qCFGZa4ogc5LR56PL", 
    "createdAt" : ISODate("2015-07-18T13:19:16.098Z"),
    "user" : "owfJ4ozrfsp26o8G4" 
}

例如我想写出来

  <template name="employer">
      <h1> Employer</h1>

      <h2>{{_id}}</h2>
      <h2>{{createdAt}}</h2>
      <h2>{{user}}</h2>


    </template>

1 个答案:

答案 0 :(得分:2)

data挂钩需要是同步的,因此您无法从中调用方法(并期望得到结果)。但是,您可以使用this question的任何答案轻松将此职责移至模板。或者,你可以尝试从你的data钩子中调用reactive-method - 我从来没有真正这样做过,但它似乎可以起作用:

data: function() {
  var currentuser = Meteor.userId();
  return ReactiveMethod.call('getEmployer', currentUser);
}

附注 - 如果事实证明您始终只为当前用户拨打getEmployer,则无需传递Meteor.userId(),因为this.userId可用于该方法。