2

私は、とりわけ、ユーザーが入力した特定の値の現在の合計を保持して、それらが合計で100%になるようにする半複雑なUIを持っています。各データ項目自体は他のすべてのデータ項目を認識しないため、実際のデータ項目自体ではなく、メインモデルで計算されたオブザーバブルを使用してこの計算を処理します。

ユーザーが(ajax呼び出しを介して)リストをフィルター処理した場合でも、リストを1つのアイテムに置き換えても、現在欠落しているすべてのアイテムに関連して計算されたオブザーバブルがぶら下がっているように見えることに気付きました。関数を使用して、「動的」オブザーバブルを生成します。

メインの「テーブル」でko.cleanNodeを使用しようとしましたが、まったく更新できませんでした。このシナリオで計算されたオブザーバブルを処理する適切な方法は何ですか?

景色:

<span class="remainderText" data-bind="text:$root.getFieldTotal($data,'Customer')"></span>

モデル:

self.getFieldTotal = function (record, field) {
    return ko.computed(function () { 
                 .. some code here ...
            });
 }

foreachを駆動するアイテム配列を置き換えようとすると、計算されたobservableは、すべての古いアイテムがまだぶら下がっているように起動します。

4

1 に答える 1

0

私はknockoutjsを初めて使用するため、これが機能する理由を正確に説明することはできませんが、getFieldTotalメソッドをko.computedではなく通常の関数にすると、必要な動作が得られます。このフィドルを参照してください...

http://jsfiddle.net/PggQJ/1/

于 2012-08-01T19:23:15.763 に答える