Angular bootstrap后未加载指令

时间:2016-03-31 09:17:14

标签: javascript angularjs angularjs-directive angular-bootstrap

在众多博客中,我已经读到,当角色获取引导时,所有控制器/指令应该在配置阶段注册到$ compileProvider实例,然后才能应用。

我尝试过这种方法并且无法实现这一点,考虑到我使用的是TypeScript 1.8和AngularJS 1.5。

对于app.ts,我做了一个基本的实现,然后将角度引导到文档上:

app.ts:

module playground.core
{
    "use strict";

    export let app: ng.IModule = angular.module("MyApp", []);   
    export let provider: ng.ICompileProvider = null;

    app.config(($compileProvider: ng.ICompileProvider): void =>
    {
        console.info("config hit");
        provider = $compileProvider;
    });

    angular.bootstrap(document, ["MyApp"]); 
}

此时,配置(...)被命中,并且根据Angular的文档,提供程序实例被正确设置为我注入config(...)的$ compileProvider。

然后我有一个名为my-directive的指令,它应该只是在页面上显示一个粗体文本:

mydirective.ts:

module playground.directives
{
    "use strict";

    let load = (): void =>
    {
        if (playground.core && playground.core.provider)
        {   
            core.provider.directive.apply(null, ["myDirective", ["$compile", ($compile: ng.ICompileService): ng.IDirective =>
            {
                return <ng.IDirective>{
                    template: "<strong>Bold</strong>"
                };
            }]]);           
        }
        else
        {
            setTimeout(load);
        }
    };

    load();
}

我有一个setTimeout,因为在点击mydirective.ts文件时,配置尚未结束,因此提供程序将为null。一旦完成,它是否成功注册了调用,但RETURN语句永远不会触发。

我尝试了很多这种方法的排列(必须是TypeScript),我无法让它工作。如果我将 core.provider.directive.apply(...)中的行更改为 core.app.directive.apply(...),那么它有效吗?

我完全被这个困扰了。

0 个答案:

没有答案