我已经写了一段时间的AngularJS应用程序,但是Typescript对我来说是新的,将AngularJS添加到Typescript中与我过去使用的有点不同。
无论如何,这两者之间有什么区别:
app.service('customerDataService', Application.Services.CustomerDataService);
和
app.service('customerDataService', ['$http', '$q', Application.Services.CustomerDataService]);
Controller 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]);
它们似乎都可以工作。你必须明确地为服务定义注入吗?
$inject
属性在服务类中定义依赖项:static $inject = ['$http', '$q']
。有时使用注入还可以使用更好的变量名... 但是,如果你打开了严格模式(strict-di),在 Angular 1.3 中你必须列出你的依赖项。 - PSL