2011-07-27 8 views
3

ここに私の状況です:据え置き機能の解像度

私は自分のコントロールのそれぞれが基本的なもののために使用する「インターフェイス」を持っています。

だから私は、その特定の制御のための関数に渡されたの各通るprocessValidation機能を持っています。これらの関数は、isNumeric()以上の単純なものでも、Webサービス呼び出しを必要とする複雑なものでもかまいません。これらの関数は、これが検証に合格したかどうかを示す簡単なbooleanを返します。

この呼び出しが実行中の検証が完了するまで待機する一般的な方法が必要です。これはDeferredメソッドを使用するのに最適な場所だと思っていましたが、それは正しいとは言えません。ここで

は、私がこれまで持っているものです。

var dfd = $.Deferred(function (dfd) { 
      validator.validatorFn(value, $controlContainer); 
     }).promise(); 

     $.when(dfd).done(function (result) { 
      console.log('got here'); 
     }); 

私はDFDを解決する方法が必要と呼ばれる関数に入るとき。私はそれが私の本当の問題だと思う。

思考?

EDIT: 私はvalidatorFnにdfdを渡し、そこにそれを解決しようとしたが、$.whenは発火しません。

答えて

3

私はあなたの流れについては本当にわからないんだけど、なぜ繰延オブジェクトを返すvalidator.validatorFnせませんか?その後

validator.validatorFn = function(value, controlContainer) { 
    var df = $.Deferred(); 
    // do validation 
    // somewhere you call 
    df.resolve(result); 
    // or maybe df.reject(result); 
    return df; 
}; 

:ような何か

$.when(validator.validatorFn(value, controlContainer)).done(function (result) { 
    console.log('got here'); 
}); 

DEMO

+0

これは実際には最適です。私はそれについて考えていなかった:) –

+0

@Mike:ようこそ:)私は遅延オブジェクトが理解するのは難しいかもしれないことを知っている(少なくともこれは私の場合だった;)) –

+0

まあ、私はそれらを理解したと思った...これが起こりました :) –

関連する問題