在我的控制器中,我有一个函数将另一个函数作为参数,例如:
$scope.myFun = (values, selector) => {
values.forEach((value) => {
selector(value);
}
}
我可以使用插值从HTML中调用它吗?我尝试过:
{{ myFun(myVar, function(var) {return var/2;}) }}
不幸的是没有成功,插值中的语法无效。
答案 0 :(得分:0)
您的代码可以简单地重组为以下内容:
$scope.myFun = (values) => {
values.forEach((value) => {
value = value / 2;
}
}
您应该以这种方式思考-不要将应用程序逻辑分布在所有层中,最好将其保留在控制器或更好的服务中。这样,它就可以包含测试,并且对于其他开发人员(有时甚至是您)而言,更容易理解代码中发生的事情。
仅使用模板与用户互动,并避免将额外的复杂性添加到html文件中。
答案 1 :(得分:0)
您要执行的操作在angularJs中无效。根据您的.forEach,您正在遍历项目并执行功能。如果您解决了一些问题,但不能直接从模板中解决,则在控制器上可以这样做。计算功能(item / 2)本身必须位于angularjs中的某个位置,例如您的控制器或服务。
此外,您不会从计算中返回任何内容,因此即使您已解决上述问题,仍然需要返回结果。
这样重构:
<div ng-repeat="val in [2,4,6]">
{{ $ctrl.myFun2(val, $ctrl.calc ) }}
</div>
并在控制器(es6)上
myFun2(value, selector) {
return selector(value);
}
calc(val) {
return val / 2;
}