2016-09-28 29 views
3

我有一個計算屬性,它是依賴於A和B:計算屬性被多次調用在奧裏利亞

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

該場所被在具有repeat.for(總共5種元素)元件中使用

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

當值A發生變化時,我希望property()被稱爲一次,並且所有元素都用新值更新。

但是property()被稱爲次。 爲什麼?

編輯: 當我做到這一點...

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

... property()叫過6次。

這是應該如何工作?

回答

2

如果你有一個repeat.for,那麼它的任何綁定的source屬性將爲每個被渲染的子元素調用。這是正常行爲,因爲它們都是單獨的綁定實例。

如果綁定源發生更改,則需要更新所有綁定目標(在本例中爲6),並通過調用源屬性進行更新。計算綁定往往是這樣簡單的計算,這通常不是一個問題。

如果您計算的綁定在計算上很昂貴,您可能需要考慮使用屬性觀察器來獲取相關屬性,並在其中任何一個屬性發生更改時簡單地設置計算屬性,而不是讓綁定引擎在綁定時調用它。

編輯

澄清:這不會真的有什麼關係computedFrom。非計算屬性也會被讀取6次,但沒有getter來掛鉤調試器,所以你不能直接看到它。