Мне нужно динамически вызвать функцию в области, для:
$scope.myFunction1= function(){}
$scope.myFunction2= function(){}
Мне нужно установить атрибут в директиве, например:
<my-directive func-name="myFunction1"></my-directive>
Чтобы я мог указать, какую функцию вызывать без использования оператора if
// then to call the function as:
$scope[attrs["funcName"]]();
Это возможно?
Это еще проще, если вы привязываете атрибут к переменной области с привязкой текста.
scope: {
funcName: '@'
},
controller: function() {
$scope[$scope.funcName]();
}
Хотя это похоже на анти-шаблон, когда у Angular уже есть поддержка для передачи функции напрямую. Что вы на самом деле пытаетесь достичь здесь? Откуда появляется функция?
@
обязательный? Я так не думаю. :)
@
связывает текстовое значение атрибута, верно?
Вы можете использовать случай переключения, я считаю его эффективным, чем любое условное утверждение
$scope.fun1(){}
$scope.func2(){}
function callFun(funcName){
switch(funcName){
case'func1':{
$scope.func1();
break;
}
case'func2':{
$scope.func2();
break;
}
}
}