MiceBishop
MiceBishop

Reputation: 1

Meteor with Blaze: My helper is not working with {{ #each }} loop

I am using Blaze with Meteor. I have announcements_list.html

<template name="AnnouncementsList">
    <div class="announcements">
        <ul class="collection">
            {{ #each announcements }}
                {{ >announcementItem }}
            {{ /each }}
        </ul>
    </div>
</template>

And announcements_list.js

Template.AnnouncementsList.helpers({
    announcements: function() {
        return Announcements.find({}, {sort: {createdAt: -1}});
    }
});

If I remove the {{ each }} loop, i can read {{ >announcementItem }}. So I think the problem is the function in the helper. Help me please =.= ...

Upvotes: 0

Views: 282

Answers (2)

Ramil Muratov
Ramil Muratov

Reputation: 546

You are rendering the same template for every item in announcements. Where this template get data from? I would make something like this:

<template name="AnnouncementsList">
    <div class="announcements">
        <ul class="collection">
            {{#each item in announcements}}
                {{> announcementItem item}}
            {{/each }}
        </ul>
    </div>
</template>

Then full item object will be accessible in your announcementItem through

  • Template.instance().data in helpers and events
  • this.data in onCreated and onRendered.

Upvotes: 0

Joshua Burkhalter
Joshua Burkhalter

Reputation: 31

Is there an announcementItem in your Announcements db or are you trying to access data from a template? If the former, your blaze call should be {{announcementItem}}. In an #each, #unless or #with there is no arrow needed.

Upvotes: 1

Related Questions