Function Aurelia repeat.for多次调用函数
为了发现我们在IE 11上使用Aurelia时遇到的一些性能问题,我尝试只记录一个计时器来跟踪进度。在这样做时,我注意到在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
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