使用angularjs中的ng-repeat在ng-click函数中未定义回调函数

时间:2015-12-17 09:50:20

标签: angularjs angularjs-ng-repeat ng-repeat angularjs-ng-click

我很难在ng-repeat下的ng-click中调用回调函数。 以下是摘录。

调用ng-click函数但是在调用回调函数时 - 它失败 - 未定义 - cb不是函数消息

HTML部分

<div ng-repeat="item in items">
  <span ng-click="itemClick(cb)">{{item}}</span>
</div>

的Javascript

....
<script type="text/javascript">
  function cb(){
     alert('Hey');
  }
</script>

...
$scope.itemClick = function(cb) {
    cb();
};

我是棱角分明的新人。

2 个答案:

答案 0 :(得分:1)

这是因为在编写<span ng-click="itemClick(cb)">{{item}}</span>时,您希望cb成为范围内的属性,但不是。

将函数设置为全局函数并不是一个很好的做法,就像你正在尝试使用cb一样。为什么你不能在alert('hey')内写下你想要运行的任何代码($scope.itemClick) - 函数?

答案 1 :(得分:0)

angular将取代itemClick(cb)
有点
v1[...];var v0;if("cb" in s){v0 = s.cb} else if("cb" in l){v0 = l.cb} return v1(v0)

s是作用域,l是一个对象,您可以在将变量传递给在指令中定义的函数时定义:{click:"&"}
如果要调用点击功能,则执行$scope.click({$event:event}),此对象将作为l传递。
所以你的全局创建的cb在你的范围内不可用。

问候