我有一个依赖于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次。
它应该如何运作?
答案 0 :(得分:2)
如果您有repeat.for,则为每个呈现的子元素调用其中任何绑定的source属性。这是正常行为,因为它们都是单独的绑定实例。
如果绑定源发生更改,则需要更新所有绑定目标(在本例中为6),并通过调用source属性进行更新。计算绑定往往是如此简单的计算,这通常不是问题。
如果计算出的绑定在计算上很昂贵,那么您可能需要考虑使用属性观察器来处理依赖属性,并在其中任何一个更改时简单地设置计算属性,而不是让绑定引擎在绑定时调用它。
修改强>
澄清一下:这与computedFrom
没有任何关系。非计算属性也会被读取6次,但是没有getter来挂钩调试器,所以你不能直接看到它。