gpt4 book ai didi

javascript - Angularjs - 我在注入(inject)方面做错了什么?

转载 作者:行者123 更新时间:2023-11-28 20:39:26 25 4
gpt4 key购买 nike

In my previous question我得到了一个热注入(inject)依赖项的答案,当我测试它时,一切都运行良好。然后我重构了代码并想要启动应用程序实现,但注入(inject)停止工作:( http://jsbin.com/alemik/1/edit

除了jsbin之外,这里是源码:

var ABCS = angular.module("ABCS", []);
ABCS.Configuration = angular.module('ABCS.Configuration', []);
ABCS.Controllers = angular.module('ABCS.Controllers', []);
ABCS.Modules = angular.module("ABCS.Modules", []);
ABCS.Services = angular.module("ABCS.Services", []);

ABCS.run(["$rootScope", "$location", "ABCS.Services.LogService",
function ($rootScope, $location, logger) {
logger.log("app start");
}]);

ABCS.Configuration.factory("Environment", function () {
return {
logOutputElementId: "output",
hasConsole: console && console.log
}
});

//Log service
ABCS.Services.LogService = function (config) {
this.log = function (message) {
if (typeof (config.Environment.logOutputElementId) === "string") {
document.getElementById(config.Environment.logOutputElementId).innerHTML += message + "<br/>";
}
else if (config.Environment.hasConsole) {
console.log(message);
}
else {
alert(message);
}
};
};
ABCS.Services.LogService.$inject = ["ABCS.Configuration"];
ABCS.Services.factory("ABCS.Services.LogService", ABCS.Services.LogService);

我想念什么?为什么ABCS.Services.LogService无法注入(inject)到当前结构中。

谢谢

最佳答案

当您有多个模块时,您需要确保声明模块的依赖项。这告诉依赖注入(inject)器在寻找提供者时查看这些模块。

var ABCS = angular.module("ABCS", [
'ABCS.Services', 'ABCS.Configuration', 'ABCS.Controllers',
'ABCS.Modules', 'ABCS.Services'
]);

我必须再做一些调整才能使其正常工作:

  • 依赖项注入(inject)器不会注入(inject)整个模块,因此 ABCS.Services.LogService.$inject = ["ABCS.Configuration"]; 无法正常工作。我已将其更改为 ABCS.Services.LogService.$inject = ["ABCS.Configuration.Environment"]; 并调整了关联的工厂以适合您的命名约定。
  • factory 接受一个函数,但不会将其作为构造函数调用,因此在 LogService 的定义中使用 this 不会”不要按照您的预期行事。我已经更改了您的工厂函数来定义构造函数,然后实例化并返回该函数。

在此处查看工作版本:http://jsbin.com/alemik/2/edit

关于javascript - Angularjs - 我在注入(inject)方面做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14693607/

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