angular / Typescript指令 - 编译函数未被调用

时间:2015-12-03 12:41:40

标签: angularjs typescript

我正在尝试使用下面的模式在Typescript中创建一些指令。问题是'编译'返回的块。似乎没有被召唤。该类肯定会被创建,如果我单步执行,我可以看到编译函数在实例化时似乎被拾取,但编译中的代码永远不会运行。

我尝试将编译拆分为一个非常简单的调用(即compile():any => {console.log(' works')}和一些类似的变体),但是可以'得到任何代码来执行。

有什么想法吗?

export class myDirective implements ng.IDirective {

    public restrict: string = 'AE';

    constructor() {
        console.log('my-directive ctor'); // this message IS logged
    }

    public compile = (element: JQuery, attrs: ng.IAttributes, transclude: any): ng.IDirectivePrePost => {
        element.addClass('my-directive-class');
        console.log('in compile');  // this message IS NOT logged
        return {
            pre: ($scope: any, element: JQuery, attrs: ng.IAttributes) => {
                console.log('in compile pre');  // this message IS NOT logged
            },
            post: ($scope: any, element: JQuery, attrs: ng.IAttributes) => {
                console.log('in compile post'); // this message IS NOT logged
            }
        };
    }

    public static factory(): ng.IDirectiveFactory {

        var directive = () => {
            return new myDirective();
        };

        return directive;
    }

}

更新 我最初没有包含我用Angular注册指令的代码,它看起来像这样:

angular.module('myModule').directive('myDirective', myDirective.factory);

感谢来自@Gustav的提示,我意识到在指令中注册的工厂方法正在返回一个函数。我需要返回工厂函数的结果,所以简单地将parens添加到工厂方法的调用就可以了:

angular.module('myModule').directive('myDirective', myDirective.factory());

0 个答案:

没有答案