gpt4 book ai didi

angularjs - 使用 Typescript 在 AngularJS 中注入(inject)工厂

转载 作者:搜寻专家 更新时间:2023-10-30 20:41:24 24 4
gpt4 key购买 nike

所以在普通的旧 Angular 中,你会像这样注入(inject)一个工厂:

(function(angular){
"use strict";

var app = angular.module('app', []);
app.factory('MyFactory', ['$http', function($http) {
....
});
}());

现在使用 Typescript,我尝试像这样使用 $inject:

module Services {
export class MyFactory {
static $inject = ['$http'];
constructor(private $http: ng.IHttpService) {
}
}
}

var app = angular.module('app', []);

app.factory('MyFactory', Services.MyFactory) //<-- This does not work, never is instantiated.

app.factory('MyFactory', ['$http', Services.MyFactory]); //<-- No deal, it has constructor dependencies

// Seems you have to do this
app.factory('MyFactory', ['$http', ($http) => new Services.MyFactory($http)]);

使用 Typescript 在 Angular 中注入(inject)工厂的正确方法是什么?

最佳答案

在此todoMvc示例项目他们将工厂函数声明为函数而不是类。

module Services {
export function MyFactory($http: ng.IHttpService): string{
var stuff = "foo";
return stuff;
}
MyFactory.$inject = ["$http"];
}

app.factory("myFactory", Services.MyFactory);

因为指令是工厂函数,所以这是我们(在我的项目中)用于指令的语法。然后函数的返回类型是ng.IDirective

我也同意 basarat 的观点,即在您的情况下使用 .service 更好。这仅供引用如何在 typescript 中编写 angular.factory 。

关于angularjs - 使用 Typescript 在 AngularJS 中注入(inject)工厂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26112608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com