4

私は、サーバー側でカスタムValidationAttributesを使用してMVC 3の検証を拡張しており、カスタム検証のためにhtml5データ属性を出力するIClientValidatableを実装しました。私はjQuery.validator.addMethodを使ってクライアント側の検証を追加しました。最後に、html5データ属性をjQueryのバリデータが理解できる形式に変換するアダプタを記述します。私の検証はいくつかの値を取るので、addSingleValのようなより単純な関数ではなく、jQuery.validator.unobtrusive.adapters.addを使う必要があります。jquery.validate.unobtrusiveのsetValidationValuesはファイルの外部で使用できませんか?

私のアダプタ内では、setValidationValuesやgetModelPrefixなどのjquery.validate.unobtrusiveファイルのいくつかの関数を使用すると便利ですが、誤解されていない場合、これらの関数はクロージャ内にあり、閉鎖。私は実際に私のカスタム関数を変更する可能性のあるマイクロソフトの所有するスクリプトファイルに入れたいとは思っていません。だれかがアイデアを持っていなければ、明らかに理想的ではない自分のファイルにこれらの関数を複製しなければなりません。

どのようなアイデアや他の人は何をしていますか?

答えて

2

私は怖いです。
ご存知のように、これらの機能は、次のように実装します:

(function ($) { 
    ... 
    function setValidationValues(options, ruleName, value){ 
     //the implementation 
    } 
    ... 
}(jQuery)) 

は限り民間の範囲内で定義され、この関数としては、クラスのために一種のプライベート機能、アウト側からアクセスすることはできません。これらの種類の関数を定義する目的は、スコープ外ではアクセスできないことです。
minifier methodsまた、これは FACTを認識し、できるだけjsを圧縮するために使用します。縮小版 jquery.validate.unobtrusive.min.jsを見ると、それはもはや setValidationValues機能ではなく、(いくつかの手紙) x機能であることが証明されます。

これらの機能のコピーと貼り付けは、サイズが短すぎると問題ではありません。小型化機では、200 bytesのためにこの機能と他の3つの機能を得ることができます。この200バイトは1回だけ使用されます。


しかし、あなたは関数の名前を検索し、あなたの adapter.add(function(){//use their name here})に配置でき縮小さバージョンを使用している場合、あなたはそのコピー&ペーストが優れている気付くだろう方法があります。

関連する問題