【发布时间】:2015-04-10 02:39:47
【问题描述】:
我有以下用 TypeScript 编写的 AngularJS 应用程序
我初始化应用程序的主应用程序:
module MainApp {
export class App {
public static Module : ng.IModule = angular.module("mainApp", [])
}
}
还有我的控制器
module MainApp {
export class Person {
public firstName: string;
public lastName: string;
}
export interface IMainAppCtrl {
}
export class MainAppCtrl implements IMainAppCtrl {
public person : Person;
constructor() {
this.person = new Person();
this.person.firstName = "Vorname";
this.person.lastName = "Nachname";
}
}
MainApp.App.Module.controller("mainAppCtrl", MainAppCtrl);
}
这行得通,但我对这个解决方案不太满意,因为在这里我必须在我的控制器本身中为我的应用程序注册控制器
MainApp.App.Module.controller("mainAppCtrl", MainAppCtrl);
如果有可能直接在“App”类中注册控制器就好了:
public static Module : ng.IModule = angular.module("mainApp", []).controller("mainAppCtrl", MainAppCtrl);
但这在这里不起作用,我从浏览器收到错误消息
“参数 'mainAppCtrl' 不是函数,未定义”
在我旧的普通 JS 角度控制器中,我有一个 mainApp,我在其中注册了所有控制器,例如
angular.module("app.main", [
"ui.router",
"ngSanitize",
"DirectiveTestsCtrl",
....
]);
在我的控制器中,我只为 angular 注册了控制器名称:
angular.module("DirectiveTestsCtrl", [])
.controller("DirectiveTestsCtrl", function () { ... });
上面显示的带有打字稿的狙击也可以做到这一点,或者这里的最佳实践是什么 - 我在网上搜索并找到了很多示例,但对于 controlerAs 语法和“module Name { class xyz }”这不是一个好的示例真的很有效。
【问题讨论】:
-
代码运行的顺序是什么?
MainAppCtrl类的初始化需要在MainApp.App初始化运行之前运行。
标签: javascript angularjs typescript typescript1.4