Начало работы с Meteor — Display Collection

Я новичок в Javascript и Meteor - и я уверен, что совершаю очень простую ошибку.

Я пытаюсь понять, как отображать содержимое коллекции.

Это основано на учебнике на сайте Meteor — я заменил «Задачи» на «sw», что также является названием моей коллекции.

 Template.HomePrivate.helpers({

});

sw = new Mongo.Collection("sw");

if (Meteor.isClient) {
  // This code only runs on the client
  Template.body.helpers({
    text: function () {
      return sw.find({});
    }
  });
}

HTML:

<template name="HomePrivate">
    <div class="page-container container" id="content">
        <div class="row" id="title_row">
            <div class="col-md-12">
                <h2 id="page_title" class="pull-left">
                    Welcome {{userFullName}}!
                </h2>
                <div id="page_menu" class="pull-right">
                </div>
            </div>
        </div>
    </div>
  <div class="container">
    <header>
      <h1>Sight Words</h1>
    </header>
 <p>begin list</p>
    <ul>
      {{#each sw}}
        {{> sw}}
      {{/each}}
    </ul>
    <p>end list</p>
  </div>
</template>

<template name="sw">
  <li>{{text}}</li>
</template>

person ChadM    schedule 08.03.2016    source источник


Ответы (1)


Ваш цикл #each ничего не отображает, потому что sw не определен как помощник:

{{#each sw}}
  {{> sw}}
{{/each}}

Blaze ищет имя помощника при использовании вашего цикла #each - я думаю, в этом ваша путаница. В этом случае вы хотите использовать помощника, который вы определили выше, text:

{{#each text}}
  {{> sw}}
{{/each}}

sw не был определен как помощник, поэтому Blaze не распознает его.

Теперь {{> sw}} является допустимым синтаксисом, поскольку он определен как шаблон (именно для этого используется символ >). Предполагая, что в вашей коллекции ПО есть поле text, теперь ваш цикл #each должен правильно отображаться.

person Stephen Woods    schedule 08.03.2016