2016-03-31 5 views
0

AngularJSでは、ng-clickするためにparamsを持つ関数を渡しています。 ieコールバックでfn(param1、param2)を実行するAngularJS ng-click style

<div ng-click="myFunc(param)">Click Me</div> 

私がやりたいことは、そのようなparamsを持つ関数をJSのコールバックとして渡すことです。つまり

setTimeout(myFunc(param), 2000); 

私は角度がそれをやってのけるように見えるとして、それが可能でなければならない理解が、どこでもそれを見つけることができます。


PS。これのユースケースは、約束で動作するsetTimeoutを作成しているので、約束のチェーンで返すことができます。あなたが興味を持っている場合は、私がこだわっている場所です:

function qTimeout(fn, duration){ 
    var deferred = q.defer(); 

    setTimeout(function() { 
    fn(*grr*) 
     .then(deferred.resolve) 
     .catch(deferred.reject) 
    }) 

    return deferred.promise; 
} 
+0

'$ timeout'サービスを使用します。それは 'setTimeout'をラップし、約束を返し、連鎖することができます。 https://docs.angularjs.org/api/ng/service/$timeout – georgeawg

+0

おかげさまで、私がやっていることはNodeJSの機能を再現することでしたが、以前はAngularで作業していたことが分かっていました。 –

答えて

1

あなたが探しているのはClosureですか?

function myFunc(param) { 
    return function myFunc2() { 
    // do something with param.. 
    return doAsync(param); // suppose to return promise 
    }; 
} 

setTimeout(myFunc(param), 2000); 

myFuncmyFuncmyFunc2からparamは2000ミリ秒後にsetTimeoutで実行されようとしている必要がありmyFunc2を返します。

+0

それは私が探していたものでした!私は閉鎖について聞いたことがあるが、決してそれらを調べなかった。乾杯! –

関連する問題