AngularJS ng-click:如何调用函数作为参数的函数

AngularJS ng-click: how to call a function with a function as parameter?

本文关键字:函数 参数 调用 ng-click 何调用 AngularJS      更新时间:2023-09-26

我想编写一个确认框函数(打开一个模态),在ng-click指令中调用。

在这个确认模式中,我有两个按钮:取消 + 确定。单击"取消"将关闭该模式。单击Ok必须调用通过我的ng单击调用(带参数)给出的(回调)函数:

<button ng-click="confirmBox('beSureQuestion', functionToCallWhenOkClicked(parameter))">Delete</button>

有没有办法在ng-click中给出一个函数作为参数?

我不想在我的 html 模板中使用 if 语句。

有什么建议吗?

不,你可以按照你尝试的方式去做。问题是ngClick将同时执行两个functionToCallWhenOkClicked(parameter)confirmBox函数,因为您可以使用()立即调用它们。

但是,您可以做的是传递如下所示的函数引用:

<button ng-click="confirmBox('beSureQuestion', functionToCallWhenOkClicked)">Delete</button>

他们在需要时从控制器调用它:

$scope.confirmBox = function(msg, okCallback) {
    // some checks ...
    okCallback();
}

上。来自@Marcel恩尼克斯的评论。为了能够传递其他参数,最好再向函数传递一个参数confirmBox

ng-click="confirmBox('beSureQuestion', functionToCallWhenOkClicked, {para1:value1, para2, value2})"

由于JavaScript是一种函数式编程语言,因此变量和函数之间实际上没有区别。变量只是一个返回其值的简单函数。因此,要将函数用作参数,只需通过将函数添加到角度控制器中的$scope将函数传递给视图:

$scope.myCallback = function(anyParameter) {
    //do some stuff
    return "some stuff" + anyParameter;
}
$scope.anyFunction = function(value,callback,parameter) {
    //do something with value
    ...
    //do the callback
    callback(parameter);
}

现在,您可以在模板中传递此回调函数:

<div ng-click="anyFunction(someValue, myCallback, someParameter)">