无法使用meteor显示游标返回的值

时间:2014-04-28 11:48:24

标签: javascript meteor

我有一个看起来像这样的模板:

<template name="item_list">
    {{#each items}}
        <div>{{name}}</div>
    {{/each}}
</template>

此模板有一些客户端js代码:

Template.item_list.helpers(
{
items: function() // find items
    {
        Meteor.call('getId', Meteor.userId(), function(error, result)
        {
            if(error)
            {
                console.log(error.message);
            }
            else
            {
                console.log(result); // correct id returned

                Meteor.call('findItemById', result, function(error, result)
                {
                    if(error)
                    {
                        console.log(error.message);
                        console.log(error.stack);
                    }
                    else
                    {
                        console.log(result); // this contains 2 objects with the correct values

                        return result;
                    }
                });
            }
        });
    }
});
});

当我记录结果时,我在控制台中获得了正确的对象,但我的模板仍然是空的。专栏&#34;名称&#34;确实存在于返回的对象中。像这样:

[Object, Object]
0: Object
_id: "Mcqf3Hh2ARH2NJsDB"
name: "item 1"

1: Object
_id: "e9mkxgNqHgM3czMvE"
name: "item 2"

1 个答案:

答案 0 :(得分:1)

你必须记住javascript是异步的。在回调中使用“return”时,它不会返回到原始的Method调用。它只会返回回调方法。

您必须使用Session变量来连接数据并运行初始调用,即创建模板。

Template.item_list.helpers(
{
    items: function() {
        return Session.get('items');
    }
});

Template.item_list.created = function() {

    Meteor.call(... function(err,result) {
    ....
      Session.set('items', result);
    ....

    }

}