我正在使用淘汰賽mapping plugin爲我自動創建視圖,並且它們工作正常。從具有多個可觀察屬性的對象中獲取一個通知
但是,我使用Raphael.js來生成一個基於我映射對象中的值的量表,但我注意到該量表會重新繪製每個已更新的可觀察值。鑑於頁面上有大量的這些量表,每次從AJAX調用中獲取新數據時,每次重新繪製它們都會重新繪製三次,這對性能並不是很好。
因此,我已經將對象上的所有屬性都改爲了正常的JavaScript屬性,在映射選項中使用了copy
。
現在我遇到的問題是,一個可觀察的屬性正在更新之前所有的直線javascript屬性已被更新,所以量表的一部分不同步。具體來說,observable屬性是DisplayValue,我將其作爲文本輸出到量表的中間,而我也有一個正常的屬性PercentValue,用於在量表上實際繪製線條。因此DisplayValue在PercentValue之前更新,這會導致標尺重新繪製,這意味着標尺上的線始終顯示最後一個PercentValue,而不是當前的百分比值。
我已經看了throttle extender,看來我必須添加一個計算屬性,其中包含我的observables這個工作,但我不喜歡必須添加屬性的想法只是爲了獲得這個功能。同樣,我假設我可以添加一個可觀察屬性(例如LastUpdated),並在整個對象更新後手動更新該屬性,但這也令人不滿意。
確實似乎有一個combinedObservable提出的問題,所以我想現在沒有辦法按照我想要的方式做這件事。
那麼,有沒有更好的方式來完成這一切?有沒有一些方法可以在observables之前獲得正常的javascript屬性更新?我猜這些屬性是按字母順序處理的?
一種技術是讓observable包含一個對象,分別更新對象屬性,然後調用myObservable.valueHasMutated()或將observable設置爲更新的對象(當新值爲對象,即使它是同一個對象)。 –
爲此歡呼,它確實有幫助,雖然我已經按照你的建議稍微不同地實施了,所以我已經回答了。希望沒關係? –