вернуть значение объекта из помощника (метеор) - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть вспомогательная функция, которая принимает параметр и возвращает объект.

objectReturnHelper: function(param1) {
   var obj1 = collectionName.findOne(param1).count1;
   var obj2 = collectionName.findOne(param1).count2;;
   return {
        obj1: _.range(0, obj1),
        obj2: _.range(0, obj2)
    };
}

Теперь я хочу получить доступ к значениям объектов по отдельности. Вот как я пытаюсь это сделать:

{{#each objectReturnHelper id obj1}}
        <p>TEST</p>
{{/each}}

Но это не дает результатов. Но если я удаляю параметр, он работает нормально:

objectReturnHelper: function() {
   var obj1 = 5;
   var obj2 = 10;
   return {
        obj1: _.range(0, obj1),
        obj2: _.range(0, obj2)
    };
}


{{#each objectReturnHelper.obj1}}
        <p>TEST</p>
{{/each}}

Есть идеи?

1 Ответ

0 голосов
/ 05 сентября 2018

Чтобы лучше отражать структуру ваших объектов, вы можете использовать #with для правильного доступа к контексту объекта . В этом контексте вы можете создать диапазон для каждого элемента, в пределах данного диапазона, используя #each

{{#with objectReturnHelper id}}
  {{#each this.obj1}}
    <p>Test (1)</p>
  {{/each}}
  {{#each this.obj2}}
    <p>Test (2)</p>
  {{/each}}
{{/with}}

Если ваш помощник дает неожиданные результаты, у вас хорошо получается неинвазивный запасной вариант:

objectReturnHelper: function(param1) {
   var query = collectionName.findOne(param1)
   if (!query) return null

   var obj1 = query.count1;
   var obj2 = query.count2;

   return {
        obj1: obj1 >= 0 ? _.range(0, obj1) : null,
        obj2: obj1 >= 0 ? _.range(0, obj2) : null,
    };
}

Затем вы можете поймать этот запасной вариант внутри with, используя else, который автоматически срабатывает, когда контекст ложный:

{{#with objectReturnHelper id}}
  {{#each this.obj1}}
    <p>Test (1)</p>
  {{/each}}
  {{#each this.obj2}}
    <p>Test (2)</p>
  {{/each}}
{{else}}
  <p>No data found</p>
{{/with}}

Вы, конечно, можете настроить его на другой запасной вариант, когда else попадает в блоки each:

{{#with objectReturnHelper id}}
  {{#each this.obj1}}
    <p>Test (1)</p>
  {{else}}
    <p>No data found</p>
  {{/each}}
  {{#each this.obj2}}
    <p>Test (2)</p>
  {{else}}
    <p>No data found</p>
  {{/each}}
{{/with}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...