我正在使用TypeScript并创建一个控制器来将rootScope
数据传递给指令的链接功能,虽然它可以返回整个控制器,但我无法访问控制器和&#t} #39;属性。我可能错过了一些非常明显的东西,但却无法看到它。
class AnnualPerfController {
width: any;
height: number;
fontSize: number;
factsheet: boolean;
values: number[];
constructor(private scope: ng.IScope, rootScope: ng.IRootScopeService) {
rootScope.$on('DataUpdated', () => {
this.factsheet = window.location.pathname.indexOf('factsheet') > -1;
this.height = this.factsheet ? 260 : 400;
this.width = this.factsheet ? 250 : null;
this.fontSize = this.factsheet ? 9 : 11;
this.values = [
rootScope['annualizedPerf']['y1_value'],
rootScope['annualizedPerf']['y3_value'],
rootScope['annualizedPerf']['y5_value'],
rootScope['annualizedPerf']['y10_value']
];
});
}
}
AnnualPerfController.$inject = ['$scope', '$rootScope', "$element"];
export function annualPerformance(): ng.IDirective {
return {
restrict: 'C',
replace: true,
controller: AnnualPerfController,
controllerAs: 'annualPerformance',
template: '<div id="annual" style="margin: 0 auto">not working</div>',
scope: {},
link: (scope, element, attr, ctrl) => {
console.log('values', scope.$eval(ctrl['values']));
console.log('ctrl', ctrl);
}
}
}
有趣的是link
功能;第一个console.log
返回undefined,而第二个返回整个控制器,如下所示:
这正是我想要的。那么我该如何访问values
密钥及其值呢?
作为警告,这是从承诺返回的数据(如果它有帮助)