计算属性在Aurelia中被多次调用

时间:2016-09-28 10:35:38

标签: aurelia aurelia-binding

我有一个依赖于A和B的计算属性:

@computedFrom(A, B)
   get property() {
}

该属性用于具有repeat.for的元素(总共5个元素):

<element repeat.for 1 to 5 elementProperty=$"{property}">
</element>

当值A发生变化时,我希望{<1}}只需一次调用,所有元素都会使用新值进行更新。

property()被称为 6 次。 为什么呢?

修改 当我这样做......

property()

... <template repeat.for 1 to 5> <element elementProperty=$"{property}"></element> </template> 也被召唤6次。

它应该如何运作?

1 个答案:

答案 0 :(得分:2)

如果您有repeat.for,则为每个呈现的子元素调用其中任何绑定的source属性。这是正常行为,因为它们都是单独的绑定实例。

如果绑定源发生更改,则需要更新所有绑定目标(在本例中为6),并通过调用source属性进行更新。计算绑定往往是如此简单的计算,这通常不是问题。

如果计算出的绑定在计算上很昂贵,那么您可能需要考虑使用属性观察器来处理依赖属性,并在其中任何一个更改时简单地设置计算属性,而不是让绑定引擎在绑定时调用它。

修改

澄清一下:这与computedFrom没有任何关系。非计算属性也会被读取6次,但是没有getter来挂钩调试器,所以你不能直接看到它。