0

ノックアウト モデルの検証で次の問題があり、解決方法がわかりません。以下は、まず第一に、検証ルールを使用した私のモデルです。

var Data = function (data) {
this.Val = data;
}

function ViewModel(item) {
var parse = JSON.parse(item.d);
var self = this;
this.Name = ko.observable(parse.Name);
this.UserType = ko.observable(parse.UserType);
this.ID = ko.observable(parse.ID).extend({ required: { params: true, message: "ID is    required" }, decimal: { params: 2, message: "Should be decimal"} });
this.Username = ko.observable(parsed.Username).extend({ required: {
        onlyIf: function () {
            return self.UserType() > 1;
        }
    }   
});

this.WeeklyData = ko.observableArray([]);
var records = $.map(parse.WeeklyData, function (data) { return new Data(data) });
this.WeeklyData(records);
this.WeeklyData2 = ko.observableArray([]);
var records = $.map(parse.WeeklyData2, function (data) { return new Data(data) });
this.WeeklyData2(records);
}

ko.extenders.numeric = function (target, precision) {
var result = ko.dependentObservable({
    read: function () {
        return target().toFixed(precision);
    },
    write: target
});

result.raw = target;
return result;
};

ここに私の問題があります:

1) ID() オブザーバブルを使用して、小数点以下 2 桁に制限したいので、検証エクステンダー '数値' を作成しましたが、機能しません。私の使用方法とそれを修正する方法に問題はありますか?

2) また、オブザーバブルを整数に制限したい場合、どうすればそれを行うことができますか?

3) 条件 (つまり Username()) を使用してルールを定義する場合、そのカスタム メッセージを定義するにはどうすればよいですか? デフォルトルールではできたのですが、条件付きルールではうまくいきません

4) Data() オブジェクトを含む 2 つの監視可能な配列 WeeklyData1 と WeeklyData2 があります。これら 2 つの最小/最大ルールを個別に設定したいと考えています。どうすればそれを成し遂げることができますか?

4) 現在、エラー メッセージはデータ フィールドのすぐ隣に表示されますが、フィールドに対して '*' を表示しながら、すべてのエラー メッセージを単一の検証概要に表示したいと考えています。Validation-bindingsを使用するように言われましたが、使用方法がわかりません。誰か例を教えてください。

たくさんの質問があることは承知していますが、誰かが助けてくれれば幸いです。

前もって感謝します

4

1 に答える 1

0

コードに飛び込む代わりに、質問のために小規模なデモを作成しました。では、行きましょう。

1)ID()オブザーバブルを使用して、小数点以下2桁に制限したい....および2)また、オブザーバブルを整数に制限したい場合....

あなたの 1 と 2 の質問はかなり似ているので、この両方を 1 つのフィドルで説明しました。このフィドルを確認してください

3) 条件 (つまり Username()) を使用してルールを定義する場合、カスタム メッセージを定義するにはどうすればよいですか ....

プロパティを使用messageしてカスタム メッセージを設定できます。このフィドルを確認してください

4) Data() オブジェクトを含む 2 つの監視可能な配列 WeeklyData1 と WeeklyData2 があります。

この質問、これらの配列の両方に含まれるデータのタイプ、および最小/最大ルール(配列の長さまたはその他)を設定する対象が明確ではありません。ですから、これをクリアしてください。私はこれを手伝おうとします。

5) 現在、データ フィールドのすぐ隣にエラー メッセージが表示されます.....

この質問の答えは、私があなたのハウツーですでに与えたものですか? ノックアウト js 検証の質問 (更新を確認してください)。

それが役立つかどうか教えてください!

于 2013-04-02T17:24:18.473 に答える