Метеор - показать коллекцию с условиями

У меня есть пользовательское приложение Meteor с коллекцией, представляющей группы.

Группа примерно такая:

{ name: groupname, members: [memberuseridlist], owner: owneruserid}

У меня есть шаблон для этих групп, который выглядит так:

{{#each groups}}
    <li>{{name}}
        -
        <button class="join">+</button>
        <button class="leave">-</button>
        <button class="delete">x</button>
    </li>
{{/each}}  

Но я хотел бы убедиться, что отображаются только соответствующие кнопки, например:

 {{#each groups}}
    <li>{{name}}
        -
        {{#unless ismember}}<button class="join">+</button>{{/unless}}
        {{#if ismember}}<button class="leave">-</button>{{/if}}
        {{#if isowner}}<button class="delete">x</button>{{/if}}
    </li>
{{/each}}  

У меня есть набор вспомогательных методов шаблона, но я не понимаю, как передать фактическую группу в функцию, чтобы я мог оценить ismember и isowner для каждой группы.


person Hans    schedule 17.08.2015    source источник


Ответы (1)


Контекст внутри {{#each groups}} является групповым документом. Таким образом, внутри ваших помощников вы можете использовать this для обозначения группы. Попробуйте что-то вроде этого:

Template.myTemplate.helpers({
  ismember: function() {
    return _.contains(this.memberuseridlist, Meteor.userId());
  },
  isowner: function() {
    return this.owner === Meteor.userId();
  }
});

Если вы хотите сделать эти помощники более переносимыми между вашими шаблонами, см. мою статью о моделях.

person David Weldon    schedule 17.08.2015