1

vmプロパティの検証を実行するためにKnockoutValidationを利用しているKnockoutビューモデルがあります。特定のサブスクライバー関数内から「max」バリデーター値を変更しようとしています。これが私の試みであり、私が見ている振る舞いの説明が続きます。

me.inventoryToPick().key.subscribe(function () {
    if (!me.inventoryToPick().key()) {
        me.inventoryToPick().location = null;
        return;
    }

    var item = ko.utils.arrayFirst(inventory, function(inv) {
        return inv.InventoryKey === me.inventoryToPick().key();
    });

    me.inventoryToPick().quantity = ko.observable().extend({ max: item.QuantityAvailable });
});

検証(数量)を添付しようとしている監視可能なプロパティは、親の監視可能なオブジェクト(inventoryToPick)のプロパティであることに注意してください。今、私が見ている動作は、検証ルールがプロパティに追加されているということですが、最も低い値が優先されるようです。つまり、最大値ルールが最初のパスで30に設定され、次のパスで10に設定されている場合、検証は両方のパスで適切に適用されます。ただし、次のパスで最大値ルールを30(または10より大きい任意の値)に戻そうとすると、最大値10が引き続き適用されます。

適切な最大値の検証で初期化された新しいko.observableオブジェクトを使用してプロパティを設定することで、このバグを回避できる可能性があると思いましたが、問題は解決しませんでした。観察可能な増強されたノックアウトのためにエクステンダーを取り外す方法を知っている人はいますか?他に何か提案はありますか?

ありがとう、ヴィニー

4

0 に答える 0