我试图通过在模板中工作的助手来创建变量。我正在使用api:
//client
Template.hello.helpers({
fooVar: function(){
return Meteor.call('checkApi', function(error, results) {
re = JSON.parse(results.content); //returns json(see json response)
console.log(re[0].foo); // returns right value
console.log(re); //returns json
return re[0].foo //not working
});
}
});
服务器:
//server
Meteor.methods({
checkApi: function() {
this.unblock();
return Meteor.http.call("GET", "https://someApi/getData",{
headers: {
"Auth": "myToken"
}
});
}
});
我的模板:
...
{{>hello}}
<template name="hello">
{{fooVar}} //not working
</template>
JSON回复:
[
{
"FirstValue": "I'm the first value",
"SecondValue": "I'm the second value"
}
]
我正在使用此功能(在客户端帮助程序上):
console.log(results.data)
并且我在控制台中看到一个具有正确fieild的对象,但是这个:
console.log(results.data.FirstValue) is not working
这很好用:
re = JSON.parse(results.content); //returns json(see json response)
console.log(re[0].foo); // returns right value
但是在模板&#39; fooVar&#39;变量在控制台中未定义。 请解释我该怎么做才能使其正常运作。
答案 0 :(得分:1)
您无法使用帮助程序显示Meteor.call(&#39; ...&#39;)值。检查https://atmospherejs.com/simple/reactive-method或执行类似
的操作Template.hello.onCreated(function () {
Meteor.call('checkApi', function(error, results) {
re = JSON.parse(results.content);
Session.set('methodReturnValue', re[0].foo);
});
});
Template.hello.helpers({
fooVar: function(){
return Session.get('methodReturnValue');
}
});