2016-03-31 2 views
0

In AngularJS (und ich bin mir ziemlich sicher, dass ich es anderswo gesehen habe) übergeben Sie eine Funktion mit Params to ng-click. ieAusführen von fn (param1, param2) im Callback AngularJS ng-click style

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

Was ich tun möchte, ist eine Funktion mit Parametern wie diesem als Rückruf in JS übergeben. Ie.

Ich denke, es muss möglich sein, wie Angular scheint es abzuziehen, aber kann es überall finden.


PS. Der Anwendungsfall dafür ist das Erstellen eines setTimeout, das mit Versprechen funktioniert, so dass ich es in einer Versprechenskette zurückgeben kann. Wenn Sie interessiert sind, ist dies, wo ich feststecke:

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

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

    return deferred.promise; 
} 
+0

Verwenden Sie den Dienst '$ timeout'. Es enthält 'setTimeout', gibt ein Versprechen zurück und kann verkettet werden. https://docs.angularjs.org/api/ng/service/$timeout – georgeawg

+0

Dank @georgeawg, was ich zu tun versuchte, war die Funktionalität in NodeJS zu replizieren, ich war nur sicher, dass ich es zuvor in Angular funktioniert hatte. –

Antwort

1

Was Sie versuchen, herauszufinden, ist Closure?

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

setTimeout(myFunc(param), 2000); 

myFunc wird myFunc2 zurück, die haben param von myFunc und myFunc2 wird in setTimeout nach 2000 ms ausgeführt werden.

+0

Ja, das war was ich gesucht habe! Ich habe von Schließungen gehört, habe sie aber nie gesehen. Prost! –

Verwandte Themen