AngularJS通过ng-click传递匿名函数

6
我正在使用AngularJS,并希望将一个匿名的JavaScript函数从html元素的ng-click函数传递为参数到我的作用域中的一个函数。
<div ng-app="">
  <div ng-controller="Ctrl1">
      <button ng-click="test(function(){alert('pushed');})">Push Me</button>
  </div>
</div>

然后在 JavaScript 中:

function Ctrl1($scope) {
    $scope.test = function(callback){
        callback();
    };
}

我已经设置了一个简单的jsfiddle来演示问题: http://jsfiddle.net/C4t4LystX/gUj8x/4/ 每当我在代码中尝试这样做时,控制台会显示此类型的错误: “语法错误:Token '{'不是预期的,正在等待[)]”
我应该如何执行此操作?

1
在AngularJS中不支持此操作,函数应该在模板中使用之前在作用域中定义。从功能上讲,你想做什么? - pkozlowski.opensource
基本上,我有一个指令来处理弹出窗口,并具有隔离作用域。当弹出窗口关闭时,它会向更高级别的作用域发出事件,以关闭对话框并调用回调函数。回调函数取决于哪个弹出窗口正在关闭,因此我需要从HTML中传递回调函数。这样,我的指令可以保持通用性,处理任何类型的弹出窗口,因为回调是在HTML中定义的,而不是在指令中定义的。 - psionicgames
1个回答

2
在JavaScript中,您需要评估要运行的函数。在这种情况下,如果您想执行指令alert("pushed"),则需要评估该字符串。
我已经开发了一个JS Fiddle,在此处执行此操作:http://jsfiddle.net/gUj8x/6/ 请注意,指令现在作为引号转义字符串传递给Angular。

谢谢恒杰,我尝试使用eval函数,现在它对我有效。 - psionicgames

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接