Meteor Template.myTemplate.helpers不呈现输出

时间:2015-04-09 09:17:49

标签: javascript meteor meteor-helper

我是meteor的新手,我想知道为什么当我开始将这些文件放在我的/ client / template目录中时,myTemplate.helper没有呈现其假定的输出。这些是以下文件:

/clinent/template/body.html:

<body>
    <div class="row">
        <div class="col-xs-12">
            <div class="list-group">
            {{#each projects}}
                {{> projectList}}
            {{/each}}
            </div>
        </div>
    </div>
</body>

/client/template/body.js:

Project = new Mongo.Collection("project");

if (Meteor.isClient) {

Template.body.helpers({
    projects: function(){
        var projects = Project.find({});

        return projects;
    }
});

};

/client/template/templates.html:

<template name="projectList">
<a href="#" id="{{id}}" class="list-group-item {{#if active}} active {{/if}}">
    {{name}}
    <i class="glyphicon glyphicon-trash pull-right del"></i>
</a>
</template>

然而,当我将body.html和body.js放在根/目录时,它正确地渲染了ouptut。

2 个答案:

答案 0 :(得分:1)

我想我知道问题所在。

Project = new Mongo.Collection("project");

客户端和服务器都可以使用,当您将body.js移动到客户端文件夹时,它会自动served only to client,并且会破坏应用程序。

尝试以下结构:

/client/template/body.js:

Template.body.helpers({
    projects: function(){
        var projects = Project.find({});

        return projects;
    }
});

/collections.js

Project = new Mongo.Collection("project");

请注意,在客户端文件夹中创建文件时,您不需要(Meteor.isClient)。

答案 1 :(得分:0)

我认为如果你使用

它会起作用
Template.projectList.helpers

而不是

Template.body.helpers

当帮助程序用于模板时,您必须放置模板名称而不是正文。