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



我很难在ng-reeat下的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();
};

我对棱角分明是个新手。

这是因为在编写<span ng-click="itemClick(cb)">{{item}}</span>时,您希望cb是作用域上的属性,但它不是。

像您尝试使用cb一样,将函数设置为全局的做法不是很好。为什么不能直接在$scope.itemClick-函数中编写想要运行的代码(alert('hey'))呢?

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:"&"}
当您想调用click函数时,执行$scope.click({$event:event}),此对象将作为l传递
因此全局创建的cb在您的作用域中不可用。

问候

最新更新