Calling function from your angularjs directive

11:22 AM Shashank Tiwary 0 Comments


Calling function from your angularjs directive


Calling function from your angularjs directive is super easy. To call a function from your directive you need to get the expression from your custom attribute and then by using $parser service we can parser the given expression and can call that parsed expression very easily.

Here is the code for directive that using isolated scope.

var module = angularjs.module('myApp',[]);
module.directive('myCustomFunction',['$parse', function($parse) {
return {
scope : false, // no isolated scope
replace : false,
link:function(scope, element, attr) {
    element.click = function() {
        // Calling function parsing the expression first and then 
        // executing the expression under directive scope here 
        // directive scope is parent controller scope
        $parse(attr.myCustomFunction)(scope);
    };
};
}]);
If you are using isolated scope you can do the same by using function binding to the scope variable. Here is the example.

module.directive('myCustomFunction',['$parse', function($parse){
return {
scope : {
    // Isolated scope binding a function to scope variable
    myCustomFunction : '&'
},
replace : false,
link : function(scope, element, attr) {
    element.click = function() {
        // Calling bind function
        scope.myCustomFunction();
    };
};
}]);
Html code (View code)
<button my-custom-function="someControllermethod()">My Custom Directive example</button>

Thats all. Thanks.

0 comments: