Reputation: 879
I want to call function dynamically based on variable and the variable has the function name , for example
var fun =function1(1,2)
after sometimes variable fun can have function
fun= function2(2,3)
its just an example to explain my scenario
and then I want to call it from my html
html
<button ng-click="{{fun}}>call</button>
fun can have function1 and function2 sometimes
Upvotes: 0
Views: 5695
Reputation: 372
dont use {{}} if you want to access a variable. just use the variable name
function foo() {
console.log("executing foo");
}
$scope.fun = foo;
<button ng-click="fun()">call</button>
Upvotes: 0
Reputation: 5456
Because functions are first-class citizens in JavaScript, we can pass them around like we would with any other variable.
See this JSFiddle example that alternates f1
and f2
when you click on Change Handler
.
HTML
<body ng-app="exampleApp" ng-controller="appCtrl">
<div>
<h3>{{name}}</h3>
<br>
<button type="button" class="btn btn-primary" ng-click="fun()">Show Name</button>
<button type="button" class="btn btn-primary" ng-click="changeClick()">
Change Handler
</button>
<br>
<h3 ng-show="clicked">You did it {{name}}</h3>
</div>
</body>
JavaScript
var app = angular.module('exampleApp', []);
app.controller('appCtrl', function($scope){
function f1() {
$scope.name = "Chris";
}
function f2() {
$scope.name = "Harry";
}
$scope.fun = f1;
$scope.changeClick = function() {
if($scope.fun === f1) {
$scope.fun = f2;
} else {
$scope.fun = f1;
}
};
$scope.name = "Default";
});
In the example above, changeClick
alternates the value of fun
Upvotes: 1