Javascript AngularJS ng click:如何使用函数作为参数调用函数?
我想编写一个确认框函数(打开一个模式),在ng click指令中调用 在这个确认模式中,我有两个按钮:取消+确定。 单击“取消”将取消该模式。 单击Ok必须调用my ng click call(带参数)提供的(回调)-函数:Javascript AngularJS ng click:如何使用函数作为参数调用函数?,javascript,angularjs,Javascript,Angularjs,我想编写一个确认框函数(打开一个模式),在ng click指令中调用 在这个确认模式中,我有两个按钮:取消+确定。 单击“取消”将取消该模式。 单击Ok必须调用my ng click call(带参数)提供的(回调)-函数: 删除 是否有办法在ng click中指定函数作为参数 我不想在html模板中使用if语句 有什么建议吗?没有,你可以按你想做的方式去做。问题是ngClick将在单击(参数)时执行两个函数functiontocall和confirbox,因为您可以使用()立即调用它们 但是
删除
是否有办法在ng click中指定函数作为参数
我不想在html模板中使用if语句
有什么建议吗?没有,你可以按你想做的方式去做。问题是ngClick将在单击(参数)时执行两个函数
functiontocall和confirbox
,因为您可以使用()
立即调用它们
但是,您可以这样传递函数引用:
<button ng-click="confirmBox('beSureQuestion', functionToCallWhenOkClicked)">Delete</button>
UPD.来自@Marcel Ennix的评论。为了能够传递额外的参数,最好再传递一个参数到confirbox
函数:
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)">
您可以通过javascript ryt轻松完成吗?你用javascript函数试过了吗?是的,就是这样。非常感谢。让我添加这个重要特性:为了使用参数调用callbackFunction,我添加了JSON格式的第三个参数“para”:ng click=“confirbox('beSureQuestion',functiontoCallwhenOkClick,{para1:value1,para2,value2})”。也许你可以用它来编辑你的答案?是的,这是一个很好的补充。一般来说,使用对象传递许多参数和数据是一个好主意。它甚至可以是confirBox({message:'beSureQuestion',callback:functionToCallWhenOkClicked,params:{}})
。哦,额外的参数中有一个输入错误:para2,value2必须是para2:value2(无commata)-@dfsq请编辑
$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)">