0

ビューモデルで観察可能な「ページ」にバインドされた次の入力タイプがあります。

<input type="text" data-bind="value: page"/>

ユーザーはテキスト入力に任意の値を入力できますが、値が値のリスト内にある場合にのみ、モデルでバインドが発生するようにしたいと思います。ノックアウト検証フレームワークを調べ、エラーが発生したことを示す適切な拡張を構築しましたが、モデルで「ページ」プロパティが更新されないようにする方法が見つかりません。

Knockout.js でこのような状況に陥った人はいますか?

ありがとう!-ボブ

4

1 に答える 1

2

オブザーバブルを拡張することでこれを行うことができるはずです。

ドキュメントはhttp://knockoutjs.com/documentation/extenders.htmlにあります。

あなたのニーズを満たすかもしれないものの例として、ここに:

ko.extenders.allowedValues = function (target, valuesArray) {
    var result = ko.computed({
        read: target,
        write: function (newValue) {
            if (valuesArray.indexOf(newValue) !== -1) {
                target(newValue);
            } else {
                //handle the user inputting a value not allowed here
            }
        }
    });

    result(target());
    return result;
};

そして、次のようにオブザーバブルを作成します。

var page = ko.observable().extend({ 
    allowedValues: [ /* place the allowed values in this array */] });
于 2013-04-18T23:50:40.637 に答える