ng-repeat与自定义指令抛出错误

时间:2014-09-22 15:23:19

标签: javascript angularjs angularjs-directive

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

HTML:

<div ng-controller="TestCtrl">
  <div ng-repeat="page in pages">
   <custom 
    load-data="loadData = fn">
   </custom>
  </div>
</div>  

JS:
测试指令如下:

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

我从TestCtrl调用loadData,如下所示:

App.controller('TestCtrl', function($scope, $http, $timeout, $rootScope) {
 $scope.loadData(data);
}  

在TestCtrl范围内,如果未使用ng-repeat,则会出现loadData函数并且工作正常,但在使用ng-repeat时调用undefined is not a function的行时会出现$scope.loadData(data)错误。
在此先感谢

1 个答案:

答案 0 :(得分:0)

你的指令的控制器不正确,它的语法是

 controller: function($scope, $element, $attrs, $transclude, otherInjectables) { ... }

$timeout, $filter应该在$attrs$transculde之后。即使您没有使用它,也需要包括两者

即使经过上述更改,如果仍有问题,我们可以进一步检查,但必须修复以上内容,否则您将无法使用$timeout$filter