我有以下JavaScript,我想转换为TypeScript,但我很惊讶:(
JS
var app = angular.module('app', []);
app.config([...]);
app.run([...];
(function (ng, app) {
app.controller('appCtrl', [..., function(...)])
})(angular, app);
这是我到目前为止所做的。
TS
File1中:
/// <reference path="../Scripts/typings/angularjs/angular.d.ts" />
module App {
"use strict";
var mod:ng.IModule = angular.module(name, []);
}
文件2:
/// <reference path="../Scripts/typings/angularjs/angular.d.ts" />
module App {
'use strict';
export interface IAppCtrlScope extends ng.IScope {
greeting: string;
changeName(name): void;
}
export class AppCtrl {
public static $inject = [
'$scope'
];
constructor(private $scope: IAppCtrlScope) {
$scope.greeting = 'asdf';
$scope.changeName = (name) => {
$scope.greeting = 'Hello ' + name + ' !';
}
}
}
mod.controller('appCtrl', AppCtrl); // this doesn't work
}
在定义控制器的文件中执行mod.controller('appCtrl', AppCtrl)
的原因是因为它更容易维护。
答案 0 :(得分:1)
所以解决方案非常简单。我所要做的就是导出变量。
module Application {
'use strict';
export var angularApp: ng.IModule = angular.module("app", []);
}
module Application {
'use strict';
export interface IAppCtrlScope extends ng.IScope {
greeting: string;
changeName(name): void;
}
export class AppCtrl {
public static $inject = [
'$scope'
];
constructor(private $scope: IAppCtrlScope) {
$scope.greeting = 'asdf';
$scope.changeName = (name) => {
$scope.greeting = 'Hello ' + name + ' !';
}
}
}
angularApp.controller('appCtrl', AppCtrl)
}
答案 1 :(得分:0)
我会使用一个类作为控制器。有关示例,请参阅https://youtube.com/watch?v=WdtVn_8K17E&hd=1。