Function Aurelia repeat.for多次调用函数

Function Aurelia repeat.for多次调用函数,function,for-loop,aurelia,Function,For Loop,Aurelia,为了发现我们在IE 11上使用Aurelia时遇到的一些性能问题,我尝试只记录一个计时器来跟踪进度。在这样做时,我注意到在repeat.for迭代过程中出现了奇怪的行为 <div repeat.for="i of 100"> <div if.bind="lastElement(item, $last)">${$index}</div> </div> …并得出以下结果: Last Item: 99 100 Last Item: 99 169

为了发现我们在IE 11上使用Aurelia时遇到的一些性能问题,我尝试只记录一个计时器来跟踪进度。在这样做时,我注意到在
repeat.for
迭代过程中出现了奇怪的行为

<div repeat.for="i of 100">
    <div if.bind="lastElement(item, $last)">${$index}</div>
</div>
…并得出以下结果:

Last Item: 99
100
Last Item: 99
169
对我来说,结果应该是:

Last Item: 99
100
由于某些原因,此函数存在多次迭代或检查。有人能给我解释一下这里发生了什么事吗


更新:我能够通过jdanyho找到一个外部文件并创建一个用于演示的文件。然而,现在我得到的是150而不是169。Hmmmm…

函数lastElement的调用次数比iten的次数多,因为您使用函数进行绑定,在这种情况下,aurelia绑定系统会执行脏检查(有一个计时器来调用函数以查看值是否已更改)。 为了避免脏检查,可以使用decorator@computedFrom

在这种情况下,对于使用decorator,我认为您不能执行基于参数的函数逻辑,最后必须执行基于属性的函数逻辑

关于这个话题有很多博客,但你可以阅读官方帖子:

哦,你说得对。有50个额外的调用,我正在删除我的答案。我在本地(
“GET/jspm\u packages/npm/aurelia”中尝试了相同的示例-framework@1.0.8.jsHTTP/1.1“200
)并按预期工作。这可能会有所帮助:我们也在本地运行1.0.8,我将要点更新到jdanyho的源文件和相同的结果。
Last Item: 99
100