Vin*_*ent 7 angularjs typescript angularjs-service
我发现在TypeScript中对AngularJS服务的依赖注入有些麻烦.目前,我在服务类中定义了一个工厂方法,并且必须重复三次依赖注入参数:
class MyService {
public static Factory($rootScope, myController) { // 1st time
return new MyService($rootScope, myController); // 2nd time
}
constructor(public $rootScope, public myController) {} // 3rd time
}
myModule.factory('myService', MyService.Factory);
Run Code Online (Sandbox Code Playgroud)
我想做以下,但这似乎不起作用:
class MyService {
constructor(public $rootScope, public myController) {} // only once
}
myModule.factory('myService', MyService);
Run Code Online (Sandbox Code Playgroud)
这种方法适用于控制器,但对于服务则不然.有没有更好的办法?
提前致谢!
你应该用户service没有factory:
class MyService {
constructor(public $rootScope) {} // only once
}
myModule.service('myService', MyService);
Run Code Online (Sandbox Code Playgroud)
您可以简单地使用 Angular 的注入器来创建控制器,而不用使用工厂方法。
这是打字稿的示例
/// <reference path='d.ts/DefinitelyTyped/angularjs/angular.d.ts' />
class MyCtrl {
public phrase: string;
constructor($window) {
this.phrase = 'I was loaded by injector';
}
speak() {
alert(this.phrase);
}
}
function main() {
var injector = angular.injector(['ng']);
var ctrl = injector.instantiate(MyCtrl);
ctrl.speak();
}
Run Code Online (Sandbox Code Playgroud)
和一个小提琴手来证明它的工作原理:http ://jsfiddle.net/UPv5j/3/
| 归档时间: |
|
| 查看次数: |
2504 次 |
| 最近记录: |