不幸的是,我不被允许发布图片,这使得展示手头的问题变得有点困难。所以我会在这里描述它。在屏幕显示的最后一个 Meteor 中,我有一张包含行项目的发票。订单项和所有项目都完美运行并按预期显示。我想做的是在屏幕上打印 4 个行项目后在#each-loop 中“闯入”,然后做其他事情(计算和打印小计)。我无法让它工作,因为我为此创建的会话变量似乎并没有在每个订单项上发生反应性变化。相反,它似乎保留了完整#each 循环中的最后一个值。
请注意,其中有一个 listindex 变量,它在#each 循环内的每个行项目上完美地从 1 到 2,3 和 4 构建。因此,listindex 变量确实在#each 循环中反应性地工作。
同时,我在其中引入了一个会话变量,在第 4 行项目上应该是“真”,在所有其他情况下应该是“假”。在“真”上,它应该在那里打印“onderbreking”。然而,会话变量总是给出“真”并且(正因为如此)总是打印“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;
最后,这是layout6.html上涉及的html:
{{#each factuur6.lineItems}}
{{listIndex}}
{{SessionPageBreak1}}
{{#if SessionPageBreak1}}
<div><p>onderbreking</p></div>
{{/if}}
当然,还有一个 {{/each}} 语句,但是中间有很多与这个问题不太相关的代码,所以我没有放在这里。
我希望我包括了所有内容,如果没有,你们无疑会告诉我。
问题是:我做错了什么,所以会话变量在#each 循环中没有反应性地改变?