簡體   English   中英

推遲或暫停評估挖空中的依賴項,直到完全更新viewmodel(例如使用映射插件)

[英]Defer or pause evaluating dependencies in knockout until viewmodel is completely updated (using for instance the mapping plugin)

我有一個使用映射插件創建的復雜的剔除視圖模型。 我還使用映射插件更新了viewmodel:

 ko.mapping.fromJS(json, viewmodel);

我有幾個訂閱使用多個viewmodel字段來計算結果。 映射插件會分別更新每個字段,敲除操作會在每次更改時執行訂閱。 由於並非所有值都在同一時間更新,因此有時在不同字段中使用舊值和新值的混合進行計算,這在我的情況下會引起問題。

在告訴我所有值都已設置之前,是否有辦法告訴映射插件或敲除對象通常要等待依賴項的評估?

我最終要做的是在視圖模型中創建一個可觀察的對象,在批處理更新完成后為該對象提供了一個值。 我還定義了一個手動訂閱,該訂閱當時會執行相關代碼:

viewmodel.finishedBatchUpdate : ko.observable();

...
ko.mapping.fromJS(json, viewmodel);
viewmodel.finishedBatchUpdate.notifySubscribers(true);

...
viewModel.finishedBatchUpdate.subscribe(function() {
  // my code
});

我也可以創建一個pureComputed並依賴於此可觀察的對象,但是我不需要在此pureComputed自身上綁定任何內容。 在我看來,手動訂閱更干凈。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM