Javascript ng重复自定义指令引发错误

Javascript ng重复自定义指令引发错误,javascript,angularjs,angularjs-directive,Javascript,Angularjs,Angularjs Directive,我正在控制器中创建自定义指令,并在ng repeat中调用它,如下所示: scope: { loadData: "&" } controller: ['$scope', '$element', '$timeout', '$filter', function ($scope, $element, $timeout, $filter) { $scope.loadData({ fn: function(data) { //Data calc. }}); } App.contr

我正在控制器中创建自定义指令,并在ng repeat中调用它,如下所示:

scope: {
   loadData: "&"
}
controller: ['$scope', '$element', '$timeout', '$filter', function ($scope, $element, $timeout, $filter) {
$scope.loadData({ fn: function(data) {  
 //Data calc.
}});
}  
App.controller('TestCtrl', function($scope, $http, $timeout, $rootScope) {
 $scope.loadData(data);
}  
HTML:

<div ng-controller="TestCtrl">
  <div ng-repeat="page in pages">
   <custom 
    load-data="loadData = fn">
   </custom>
  </div>
</div>  
我从TestCtrl调用loadData,如下所示:

scope: {
   loadData: "&"
}
controller: ['$scope', '$element', '$timeout', '$filter', function ($scope, $element, $timeout, $filter) {
$scope.loadData({ fn: function(data) {  
 //Data calc.
}});
}  
App.controller('TestCtrl', function($scope, $http, $timeout, $rootScope) {
 $scope.loadData(data);
}  
在TestCtrl作用域中,如果未使用ng repeat,则会出现loadData函数,该函数工作正常,但会出现错误,因为在使用ng repeat时调用$scope.loadDatadata的行中未定义函数。
提前感谢

您指令的控制器不正确,语法错误

 controller: function($scope, $element, $attrs, $transclude, otherInjectables) { ... }
$timeout、$filter应位于$attrs和$transculde之后。即使您不使用它,也需要同时包含这两个选项


即使在进行了上述更改之后,如果仍然存在问题,那么我们可以进一步检查,但必须修复上述问题,否则您将无法使用$timeout,$filter

看起来是一个范围问题。ngRepeat为每个模板实例提供自己的作用域。您可能还想考虑使用$广播和$on。我尝试使用$broadcast和$on,同一问题,如果不提供ng repeat,它会工作,但如果存在ng repeat,它不会在函数中输入$on。添加了所有字段,但仍然是同一问题