我的控制器位于一个名为controller.js的独立文件中,我的app.js设置如此
angular.module('WeCompeteApp', [
'WeCompeteApp.controllers',
'WeCompeteApp.services',
'WeCompeteApp.utilities',
'WeCompeteApp.filters',
'ui.router',
'ngSanitize'
])
所以我的控制器文件中有一个名为ChallengesController
的控制器,我试图将其包含在我的指令中以访问其中一个函数。
我的指示看起来像
.directive('whenScrolled', ['$http', function($http) {
return {
restrict: 'A',
controller: 'ChallengesController',
scope: {
challenges: '=',
page: '=',
filter: '='
},
link: function(scope, elm, attr, ChallengesCtrl) {
var raw = elm[0];
elm.bind('scroll', function() {
if (raw.scrollTop + raw.offsetHeight >= raw.scrollHeight) {
console.log('scrolled to bottom');
if (scope.challenges.length >= 20) {
ChallengesCtrl.getChallenges(scope.page, 20, scope.filter);
}
}
});
}
};
}]);
但是当我尝试运行该函数时,我得到ChallengesCtrl
未定义,所以我不确定这是否设置正确。非常感谢任何帮助,如果需要更多信息,请说明。
答案 0 :(得分:2)
您的link
和controller
共享相同的范围:
从ChallengesCtrl
移除link
的注入并更改:
ChallengesCtrl.getChallenges(scope.page, 20, scope.filter);
要
scope.getChallenges(scope.page, 20, scope.filter);
link
中唯一一次控制器注入的时间是require
另一个指令控制器