我知道有get the new value of an observable in a subscribe event(在實際更改後)的解決方案,但我想知道是否可以在「beforeChange」訂閱中訪問observable的新值。在「beforeChange」訂閱中獲取可觀察值的新值
下面是current version of Knockout(3.4.1)與舊值分別新值提高beforeChange和改動後的訂閱處理程序的代碼段:
if (computedObservable.isDifferent(state.latestValue, newValue)) {
if (!state.isSleeping) {
computedObservable["notifySubscribers"](state.latestValue, "beforeChange");
}
state.latestValue = newValue;
if (DEBUG) computedObservable._latestValue = newValue;
if (state.isSleeping) {
computedObservable.updateVersion();
} else if (notifyChange) {
computedObservable["notifySubscribers"](state.latestValue);
}
changed = true;
}
顯然,NEWVALUE可在「beforeChange」等等我想分叉是一個選擇,但我不想。
是否有任何其他解決方案來獲得這個新值「beforeChange」?
您能詳細說明爲什麼您要在設置之前獲取新值嗎? –
@MichaelBest我試圖阻止FOUC。當我能夠在實際設置之前讀取新值時,我可以更新其他狀態以防止視圖的不必要的中間渲染 –
您應該能夠使用計算或訂閱來更新第二個可用於觀察的值隱藏/顯示/樣式的東西。例如:https://jsfiddle.net/dmnqoc53/ – user3297291