使用绑定缩小
$ scope 注入控制器的构造函数的方式是一种演示和使用角度依赖注入的基本选项的方法,但不能生产就绪,因为它不能缩小。那是因为缩小系统改变了变量名称,而 anguar 的依赖注入使用参数名来知道必须注入什么。因此,举例来说,ExampleController 的构造函数被缩减为以下代码。
function n(n){this.setUpWatches(n)
而 $scope
改为 n
!
为了克服这个问题,我们可以添加一个$ inject 数组(string[]
)。因此,角度的 DI 知道在控制器构造函数的哪个位置注入什么。
所以上面的 TypeScript 改为
module App.Controllers {
class Address {
line1: string;
line2: string;
city: string;
state: string;
}
export class SampleController {
firstName: string;
lastName: string;
age: number;
address: Address;
setUpWatches($scope: ng.IScope): void {
$scope.$watch(() => this.firstName, (n, o) => {
//n is string and so is o
});
};
static $inject : string[] = ['$scope'];
constructor($scope: ng.IScope) {
this.setUpWatches($scope);
}
}
}