我一直在寫AngularJS應用程序一段時間,但是Typescript對我來說是新手,然後在AngularJS中添加到Typescript中與我用的有點不同。AngularJS和Typescript - 注入服務
不管怎麼說,就是兩者之間的區別是:
app.service('customerDataService', Application.Services.CustomerDataService);
和
app.service('customerDataService', ['$http', '$q', Application.Services.CustomerDataService]);
控制器TS
module Application {
export module Services {
export interface ICustomerDataService {
getCustomer(id: number): ng.IPromise<Models.ICustomer>;
}
export class CustomerDataService implements ICustomerDataService {
constructor(private $http: ng.IHttpService, private $q: ng.IQService) {
}
getCustomer(id: number): ng.IPromise<Models.ICustomer> {
return this.$http.get('data/Customer.json').then((response) => {
return response.data;
});
}
}
}
}
應用TS
var app = angular.module('app', []);
app.value('config', new Application.ApplicationConfig());
app.service('customerDataService', ['$http', '$q', Application.Services.CustomerDataService]);
app.service('customerDataService', Application.Services.CustomerDataService);
app.controller('DefaultController', ['$scope','config', 'customerDataService', Application.Controllers.DefaultController]);
他們都似乎工作。你是否必須明確定義服務的注入?
如果您沒有縮小或縮小,但使用[ng-annotate](https://github.com/olov/ng-annotate),則不一定需要注入依賴項。你也可以通過定義一個靜態'$ inject'屬性來定義服務類中的依賴項: - 'static $ inject = ['$ http','$ q']'。使用注入也可以讓你有時候使用更好的變量名稱......但是,如果你打開strict-di,你必須列出你的依賴。 – PSL 2014-09-29 22:27:28
視頻教程:https://www.youtube.com/watch?v = Yis8m3BdnEM &hd = 1 – basarat 2014-09-29 23:35:48