我想编写一个确认框函数(打开一个模态),在ng-click指令中调用。
在这个确认模式中,我有两个按钮:取消+确定。 单击取消将取消模式。 单击Ok必须通过我的ng-click-call(带参数)调用(回调)函数:
<button ng-click="confirmBox('beSureQuestion', functionToCallWhenOkClicked(parameter))">Delete</button>
有没有办法在ng-click中提供函数作为参数?
我不想在我的html模板中使用if语句。
有什么建议吗?
答案 0 :(得分:3)
不,你可以按照自己的方式去做。问题是ngClick会同时执行两个函数functionToCallWhenOkClicked(parameter)
和confirmBox
因为您使用()
立即调用它们。
然而,你可以做的是传递这样的函数引用:
<button ng-click="confirmBox('beSureQuestion', functionToCallWhenOkClicked)">Delete</button>
他们在需要时从控制器调用它:
$scope.confirmBox = function(msg, okCallback) {
// some checks ...
okCallback();
}
UPD。来自@Marcel Ennix的评论。为了能够传递其他参数,最好将一个参数传递给confirmBox
函数:
ng-click="confirmBox('beSureQuestion', functionToCallWhenOkClicked, {para1:value1, para2, value2})"
答案 1 :(得分:1)
由于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)">