我需要在范围内动态调用函数,用于:
$scope.myFunction1= function(){}
$scope.myFunction2= function(){}
我需要在指令中设置一个属性,如:
<my-directive func-name="myFunction1"></my-directive>
这样我就可以指定调用哪个函数而不使用if语句
// then to call the function as:
$scope[attrs["funcName"]]();
这可能吗?
答案 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;
}
}
}