我在控制器中创建一个自定义指令,并在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)
错误。
在此先感谢
答案 0 :(得分:0)
你的指令的控制器不正确,它的语法是
controller: function($scope, $element, $attrs, $transclude, otherInjectables) { ... }
$timeout, $filter
应该在$attrs
和$transculde
之后。即使您没有使用它,也需要包括两者
即使经过上述更改,如果仍有问题,我们可以进一步检查,但必须修复以上内容,否则您将无法使用$timeout
和$filter