AngularJS ng-click:如何调用函数作为参数的函数
AngularJS ng-click: how to call a function with a function as parameter?
我想编写一个确认框函数(打开一个模态),在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)">
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- AngularJS:我可以跳过函数参数回调吗
- 为什么不'我们在javascript中使用函数参数的数据类型
- 使用闭包共享构造函数参数
- 函数参数的值错误
- 当一个重要的构造函数参数丢失时应该发生什么
- 阻止ReSharper将JavaScript函数参数放到新行中
- 根据函数参数将CSS值存储在var中,然后对其进行操作
- 使构造函数参数具有ES6类方法的特权
- 当客户端将两个按钮的javascript函数参数修改为相同时,SQL/PHP会更新多行
- Windows.Networking.EndpointPair构造函数参数
- 是否可以使用Sinon.JS检查函数参数绑定是否正确
- 大括号中的Javascript函数参数
- jQuery 无法使用 AJAX 调用访问函数内部的函数参数
- 将JSON字符串转换为函数参数
- eval()读取函数参数有多糟糕
- Javascript不能在一个命令中使用函数参数
- 函数参数在内部不可见,返回新的Promise(函数(resolve,reject).传递给被promise化的函数的
- ES6类构造函数参数
- 是否可以在javascript函数参数列表中调用多个函数