2012-09-24 44 views
1

我正在使用Knockout.js處理主詳細視圖。基本上,一切工作正常,有一個小缺點:只要當前顯示在詳細視圖中的項目發生更改,主控制器就不會相應地進行自我更新。Knockout.js主詳細視圖 - 如何更新主?

基本上,我明白這是爲什麼:

  • 主視圖是基於ko.observableArray,因此它僅跟蹤插入和取出物品。它不會對更新的項目做出反應。
  • 每當選擇一個項目時,它將被放入作爲詳細視圖基礎的ko.observable
  • 一旦更新了詳細視圖,數組自動包含正確的數據(因爲它使用的是同一個對象),但它不反映對UI的更改(因爲沒有項目已插入或更新)。

現在的問題是如何以優雅和正確的方式處理這個問題?

我目前能想到的兩種可能的解決方案:

  • 總結每個項目在ko.observable陣列內。這樣它將檢測到在細節視圖中所做的任何更改並相應地更新UI。
  • 或者:使用JSON.parse(JSON.stringify(...));replace()將複製的項目複製到陣列中與克隆的對象。由於現在對象已被刪除並插入內部,數組檢測到更改並更新UI。

問題:

  • 第一個解決方案是不適合大量數據的容易可行的。至少它會放慢一切。
  • 第二個解決方案工作正常,但就是......嗯,好,......根本就不是很好;-)

更好的想法?

+0

您是手動映射還是使用Knockout映射? –

+0

「地圖」是什麼意思?什麼地圖? –

回答

1

恕我直言 - 我永遠不會知道所有的性能問題。你解釋的第一個解決方案很簡單,你可以做你想做的。另一種可能的方式是rebind包含標籤到ko.computed(...)。

相關問題