Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Event handler that executed only once

Is there a directive or a way to implement in AngularJS what .one() function achieves with jQuery?

i.e., to attach an event to an element that gets executed only once.

like image 417
Angad Avatar asked Jul 03 '13 13:07

Angad


1 Answers

Wire up an ng-click to the element you want, then in the ng-click function in your controller have a variable that you toggle to a state that would make the ng-click no longer execute something like

var firedOnce = false;
scope.myClickFunction = function(){
    if(firedOnce){ return; }
    //other code
    firedOnce = true;
}

You could also wire up a directive to do it too.

edit: Jsfiddle of directive method: http://jsfiddle.net/4hDb3/

like image 50
Mathew Berg Avatar answered Sep 20 '22 22:09

Mathew Berg