/ /誰もがノックアウト検証に関する記事を知っていますか - [クローズ] - validation、knockout.js、knockout-validation

ノックアウト検証の記事を知っていますか? - 検証、knockout.js、ノックアウト検証

私はKnockoutと プロジェクトノックアウト検証 バリデーションを追加するための素晴らしい方法のように思えます、しかし、私はそれを働かせられません。

誰かがそれに書かれている何か良い記事を知っていますか?

例は少しわかりにくいですが、オブザーバブルを含むメインオブジェクトはvalidatedObservableである必要があり、そうでない場合は、物事をどのように検証しますか。それから、設定例の中にko.applyBindingsWithValidationと書いてある行がありますが、他には何も述べていません。

私が本当に望んでいるのは、観察可能な配列をforeachするビューを持っていることです。それから各項目はそれ自身の保存ボタンを持ち、検証する必要があります。

ありがとう

回答:

回答№1は1

目標を達成するための簡単な方法は次のとおりです。

最初に検証用に設定をセットアップし、このtidビットで有効にします。

    ko.validation.init({
grouping: { deep: true, observable: false }
});

今あなたが合うように使用できる他の設定オプションがあります ここに。私は言及するだけ grouping あなたのオブジェクト(潜在的にネストされている/階層構造になっている可能性があります)が再帰的にトラバースしてその中のすべてのオブジェクトが有効であることを識別したいのなら不可欠です。

それから私は一般的に私のモデルを検証するために以下のアプローチを使用します - 私はそのようなグループ化機能を利用します:

var myModel = {
Id: 0,
FirstName: ko.observable("").extend({ required: true }),
LastName: ko.observable("").extend({ required: true }),
DateOfBirth: ko.observable("").extend({ date: true }),
Errors: ko.validation.group(this),
isValid: ko.computed(function() {
return this.Errors.length == 0;
});
};

あるいは関数宣言アプローチを使用する:

function myModel() {
var self = this;
self.Id = 0;
self.FirstName = ko.observable("").extend({ required: true });
self.LastName = ko.observable("").extend({ required: true });
self.DateOfBirth = ko.observable("").extend({ date: true });

self.Errors = ko.validation.group(self);

self.isValid = ko.computed(function() {
return this.Errors.length == 0;
});
};

ko.validation.group(obj) このアプローチの鍵です。 この関数は、渡されたオブジェクトを再帰的にトラバースし、その中のすべての検証可能なオブジェクトを識別します。次に、それらをvalidatedObservableにラップします。結果は、検証に失敗したバリデータによって生成されたエラーメッセージが格納されたobservableArrayです。

そのため、ボタンがモデルを受け取るような場合、またはオブジェクト自体の中にsaveメソッドを定義したい場合は、このように保存関数を作成できます。これも機能します。

var parentModel = {
Save: function(model) {
if (model.isValid())
//perform save
else {
//do whatever
//forces all error msgs associated to display in UI
model.Errors.showAllMessages();
}
}
};

実行するようにしてください ko.applyBindings(model)ko.validation.init() が呼び出され、モデルはバリデーター付きで準備ができています

うまくいけば、これはあなたがあなたが始めるために何かを与える!がここにあります 包括的な例 私が最初にこのプラグインを使い始めたとき、それは正しい軌道に乗った。


回答№2の場合は0

Mike Dormitorioによるノックアウト検証に関する良い記事 そして ノックアウトバリデータ