这是我的组成部分:
const comp = {
controller: 'gridDetailsNavigationCtrl',
controllerAs: '$ctrl',
templateUrl: '/Scripts/app/shared/grid/navigation/gridDetailsNavigation.html',
bindToController: true,
bindings: {
viewData: '<',
listState: '@',
detailsState: '@',
pagingData: '=',
backSpinnerId: '@',
stateParams: '<'
}
};
这是组件控制器的一部分:
class GridDetailsNavigation {
constructor($rootScope, $scope, $state, tipaltiConsts) {
this._$state = $state;
this._$scope = $scope;
this._$rootScope = $rootScope;
this._consts = tipaltiConsts;
}
$onInit() {
....
}
$onDestroy() {
...
}
goToNext() {
....
}
goToPrev() {
....
}
}
我正在尝试测试组件及其控制器。我能够创建一个组件,甚至可以获得它的控制器范围:
const component = compile(angular.element(template))(scope);
scope.$digest();
component.$onInit();
// get controller in two different ways.
const $ctrl = component.scope().$ctrl;
const $ctrl2 = component.controller('gridDetailsNavigationCtrl');
我的问题是$ ctrl只返回范围属性和公共方法,例如goToNext和goToPrev未定义,$ ctrl2未定义。
我知道我可以使用$ componentController但我想要组件本身并从中获取控制器。我在这做错了什么?为什么方法无法访问?为什么第二个控制器未定义?
由于