К сожалению, мне не разрешено публиковать изображения, поэтому немного сложнее показать проблему. Поэтому я опишу это здесь. В моем последнем Meteor на экране у меня есть счет с позициями. Позиции и все работают отлично и отображаются так, как ожидалось. Что я хотел сделать, так это «вломиться» в цикл #each-loop после того, как 4 элемента строки будут напечатаны на экране, а затем сделать что-то еще (рассчитать и распечатать промежуточные итоги). Я не могу заставить это работать, так как var сеанса, который я создал для этого, похоже, не меняется реактивно в каждой строке. Вместо этого он, кажется, содержит последнее значение из полного цикла #each.
Обратите внимание, что там есть переменная listindex, которая идеально реактивно наращивает от 1 до 2, 3 и 4 для каждой строки, которая находится в цикле #each. Итак, переменная listindex действительно работает реактивно в цикле #each.
В то же время я ввожу туда сеансовую переменную, которая должна быть «истинной» в позиции номер 4 и «ложной» во всех остальных случаях. При значении «true» здесь должно быть напечатано «onderbreking». Однако переменная сеанса всегда дает "true" и (из-за этого) всегда печатает "onderbreking". Это не то, как я намеревался, чтобы это работало, конечно.
Не понимаю, почему listindex работает, а session var нет?
Вот мой javascript по этому поводу. Шаблон называется «layout6.html»:
Template.layout6.helpers({
// Bereken de index in de #each loop
listIndex: function() {
currentIndex += 1;
if(currentIndex == 4) {
Session.set('sessionPageBreak1', true);
}
if(currentIndex != 4) {
Session.set('sessionPageBreak1', false);
}
return currentIndex;
},
});
Template.layout6.SessionPageBreak1 = function() {
// Voeg de waarde van de sessie variabele toe aan de template
var data = Session.get('sessionPageBreak1');
return data;
};
Первоначально переменная сеанса устанавливается здесь:
// Session var for layoutcounter
Session.setDefault('sessionPageBreak1', false);
Session.setDefault('sessionPageBreak2', false);
Session.setDefault('sessionPageBreak3', false);
var currentIndex = 0.0;
Наконец, это html, задействованный в layout6.html:
{{#each factuur6.lineItems}}
{{listIndex}}
{{SessionPageBreak1}}
{{#if SessionPageBreak1}}
<div><p>onderbreking</p></div>
{{/if}}
И, конечно же, есть оператор {{/each}}, но между ними много кода, который не очень важен для этой проблемы, поэтому я не помещал его здесь.
Я надеюсь, что я включил все, если нет, вы, ребята, несомненно, скажете мне.
Вопрос: что я делаю не так, чтобы сессионный var не менялся реактивно внутри цикла #each?