所以我有这个数据上下文,我抓住了,无法弄清楚如何将它传递给模板。任何人都可以向我展示或指导一个例子吗?我是否需要一个模板帮助器,我将再次进入数据库以检索数据,因为我已经在铁路由器中有数据上下文...?
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>
答案 0 :(得分:2)
data
挂钩需要是同步的,因此您无法从中调用方法(并期望得到结果)。但是,您可以使用this question的任何答案轻松将此职责移至模板。或者,你可以尝试从你的data
钩子中调用reactive-method - 我从来没有真正这样做过,但它似乎可以起作用:
data: function() {
var currentuser = Meteor.userId();
return ReactiveMethod.call('getEmployer', currentUser);
}
附注 - 如果事实证明您始终只为当前用户拨打getEmployer
,则无需传递Meteor.userId()
,因为this.userId可用于该方法。