如何动态调用函数?

时间:2015-11-29 15:21:42

标签: angularjs

我需要在范围内动态调用函数,用于:

$scope.myFunction1= function(){}
$scope.myFunction2= function(){}

我需要在指令中设置一个属性,如:

<my-directive func-name="myFunction1"></my-directive>

这样我就可以指定调用哪个函数而不使用if语句

// then to call the function as:
$scope[attrs["funcName"]]();

这可能吗?

2 个答案:

答案 0 :(得分:2)

如果将属性绑定到带有文本绑定的范围变量,则更容易。

scope: {
  funcName: '@'
},
controller: function() {
  $scope[$scope.funcName]();
}

虽然这似乎是一种反模式,但当Angular已经支持直接传递函数时。你在这里想要实现的目标是什么?函数名称来自哪里?

答案 1 :(得分:-1)

你可以使用switch case,我认为它比任何条件语句都高效

$scope.fun1(){}
$scope.func2(){}

function callFun(funcName){
switch(funcName){
case'func1':{
$scope.func1();
break;
}
case'func2':{
$scope.func2();
break;
}

}
}