AngularJS:在指令的链接函数

时间:2016-03-14 17:02:14

标签: javascript angularjs asynchronous typescript angular-promise

我正在使用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,而第二个返回整个控制器,如下所示:

correct output

这正是我想要的。那么我该如何访问values密钥及其值呢?

作为警告,这是从承诺返回的数据(如果它有帮助)

0 个答案:

没有答案