我有一个非常特殊的场景,我无法确定原因。
我的情况简要概述:
我正在开发一个小应用程序,作为我学习TypeScript的一部分,并且使用AngularJS似乎是一个挑战几乎每个TS系统面临的新人,所以为什么不呢。
我有一个app.ts文件,它基本上设置了所需的全局变量并初始化了数据-ng-app ="" AngularJS要求的部分。
app.ts文件:
module Learning.AngularTS.Core
{
"use strict";
// ... environmental variables left out
export var AngularTSApp: ng.IModule = angular.module("angularTSApp", []);
export var ngCompileProvider: ng.ICompileProvider = null;
AngularTSApp.config(function (
$compileProvider: ng.ICompileProvider,
$controllerProvider: ng.IControllerProvider): void
{
(<any>$controllerProvider).allowGlobals();
ngCompileProvider = $compileProvider;
});
}
没什么特别的,一个模块只是创建了一个&#39;命名空间&#39;对我来说,在这里我导出一些变量,但感兴趣的是AngularTSApp变量,它需要它的配置属性集。
在.config()中,根据我发布的代码,我将对Angular的CompileProvider的引用附加到变量ngCompileProvider。
我遇到的特殊问题是,当我尝试将指令附加到页面时,.config()仅在指令后调用,并且我不知道为什么。
指令:
module Learning.AngularTS.Directives
{
"use strict";
Learning.AngularTS.Core.ngCompileProvider.directive.apply(null,
["MyTestDirective",
["$parse", "$compile",
function ($parse: ng.IParseService,
$compile: ng.ICompileService): ng.IDirective
{
return <ng.IDirective>{
restrict: "E",
replace: false,
transclude: true,
templateUrl: "",
scope: {
value: "=",
edit: "@"
},
link: function ($scope: any, $rootElement: ng.IRootElementService, $attributes: ng.IAttributes): any
{
return null;
}
}
}]]);
}
在面值上,这看起来很好,当JS文件加载时,Learning.AngularTS.Core.ngCompileProvider
为空,因为它尚未根据app.ts中的.config()部分进行初始化。
我的方法是否有问题,如果是,有更好的方法吗?