Angularjs 将函数传递到Angular.factory方法时如何使用$inject?
我的原始代码如下所示(见下文)。注意$inject语句Angularjs 将函数传递到Angular.factory方法时如何使用$inject?,angularjs,typescript,Angularjs,Typescript,我的原始代码如下所示(见下文)。注意$inject语句 module app.common { interface IProductResource extends ng.resource.IResource<app.domain.IProduct> { } export class ResourceFactory { static $inject =["$resource"]; constructor(p
module app.common {
interface IProductResource
extends ng.resource.IResource<app.domain.IProduct> {
}
export class ResourceFactory {
static $inject =["$resource"];
constructor(private $resource: ng.resource.IResourceService) {
}
public getProductResource() : ng.resource.IResourceClass<IProductResource> {
return this.$resource("/api/products/:productId");
}
}
factory.$inject = ["$resource"];
function factory($resource) : ResourceFactory {
return new ResourceFactory($resource);
}
angular
.module("common.services")
.factory("resourceFactory",
["$resource",
factory]);
}
module app.common{
接口IPProductResource
扩展ng.resource.IResource{
}
出口级资源工厂{
静态$inject=[“$resource”];
构造函数(私有$resource:ng.resource.IResourceService){
}
public getProductResource():ng.resource.IResourceClass{
返回此.$resource(“/api/products/:productId”);
}
}
工厂。$inject=[“$resource”];
函数工厂($resource):ResourceFactory{
返回新的ResourceFactory($resource);
}
有棱角的
.模块(“公共服务”)
.factory(“资源工厂”,
[“$resource”,
工厂),;
}
我的新代码利用了lambda语法,如下所示(见下文)。在这种情况下,如何处理缩小问题
module app.common {
interface IProductResource
extends ng.resource.IResource<app.domain.IProduct> {
}
export class ResourceFactory {
static $inject =["$resource"];
constructor(private $resource: ng.resource.IResourceService) {
}
public getProductResource() : ng.resource.IResourceClass<IProductResource> {
return this.$resource("/api/products/:productId");
}
}
angular
.module("common.services")
.factory("resourceFactory",
["$resource",
($resource)=>new ResourceFactory($resource)]);
}
module app.common{
接口IPProductResource
扩展ng.resource.IResource{
}
出口级资源工厂{
静态$inject=[“$resource”];
构造函数(私有$resource:ng.resource.IResourceService){
}
public getProductResource():ng.resource.IResourceClass{
返回此.$resource(“/api/products/:productId”);
}
}
有棱角的
.模块(“公共服务”)
.factory(“资源工厂”,
[“$resource”,
($resource)=>新资源工厂($resource)];
}
老实说,你应该:
angular
.module("common.services")
.service("resourceFactory",ResourceFactory);
由于使用了static$inject
和service
,因此它将正常工作
更多: