流星:需要有关json对象的解释

时间:2015-04-21 18:09:08

标签: javascript meteor

我试图通过在模板中工作的助手来创建变量。我正在使用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;变量在控制台中未定义。 请解释我该怎么做才能使其正常运作。

1 个答案:

答案 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');
    } 
});