2015-04-09 3 views
0

Я новичок в метеоритах, и мне интересно, почему это myTemplate.helper не выводит свой предполагаемый вывод, когда я начал помещать эти файлы в каталог my/client/template. Это следующие файлы:Meteor Template.myTemplate.helpers not render output

/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> 

Однако это оказание ouptut правильно, когда я поставил body.html и body.js в корне /.

+0

Это действительно странно, я не могу воспроизвести проблему. Код кажется правильным:/ – Dabrorius

+0

Хм, возможно, это потому, что есть часть кода, которая мешает ему отображать список? Поскольку на самом деле у него больше кодов, я просто показал эту конкретную часть, потому что там, где у меня проблема – JCm

+0

, я думаю, что я понял это через минуту после публикации моего комментария :) – Dabrorius

ответ

1

Я думаю, что знаю, в чем проблема.

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

Должен быть доступен для клиента и сервера, при перемещении body.js в папку клиента он автоматически served only to client, и это разбивает приложение.

Try следующую структуру:

/client/template/body.js:

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

     return projects; 
    } 
}); 

/collections.js

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

Обратите внимание, что вам не нужно, если (Meteor. isClient) при создании файлов внутри клиентской папки.

+0

Означает ли это, что я должен поместить объявление db в/server затем подписаться на стороне клиента? Это ваше предложение? – JCm

+0

Я отредактировал ответ, на данный момент (если вы добавили автозапуск в свой проект), вы можете просто убедиться, что коллекция Project доступна как для клиента, так и для сервера. – Dabrorius

+0

Хорошо, позвольте мне попробовать этот. Спасибо, сэр! – JCm

0

Я думаю, что это будет работать, если вы используете

Template.projectList.helpers 

вместо

Template.body.helpers 

Когда помощник для шаблона, то вы должны поместить имя шаблона и не тело.