Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS ng click:如何使用函数作为参数调用函数?_Javascript_Angularjs - Fatal编程技术网

Javascript AngularJS ng click:如何使用函数作为参数调用函数?

Javascript AngularJS ng click:如何使用函数作为参数调用函数?,javascript,angularjs,Javascript,Angularjs,我想编写一个确认框函数(打开一个模式),在ng click指令中调用 在这个确认模式中,我有两个按钮:取消+确定。 单击“取消”将取消该模式。 单击Ok必须调用my ng click call(带参数)提供的(回调)-函数: 删除 是否有办法在ng click中指定函数作为参数 我不想在html模板中使用if语句 有什么建议吗?没有,你可以按你想做的方式去做。问题是ngClick将在单击(参数)时执行两个函数functiontocall和confirbox,因为您可以使用()立即调用它们 但是

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

在这个确认模式中,我有两个按钮:取消+确定。 单击“取消”将取消该模式。 单击Ok必须调用my ng click call(带参数)提供的(回调)-函数:

删除
是否有办法在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)">