Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 环境”,功能(环境){ 函数LogService(){ this.log=函数(消息){ if(typeof(environment.logOutputElementId)=“string”){ document.getElementById(environment.logOutputElementId).innerHTML+=message+“”; } else if(environment.hasconnel){ 控制台日志(消息); } 否则{ 警报(信息); } } } 返回新的日志服务(); }]);_Javascript_Angularjs_Dependency Injection - Fatal编程技术网

Javascript 环境”,功能(环境){ 函数LogService(){ this.log=函数(消息){ if(typeof(environment.logOutputElementId)=“string”){ document.getElementById(environment.logOutputElementId).innerHTML+=message+“”; } else if(environment.hasconnel){ 控制台日志(消息); } 否则{ 警报(信息); } } } 返回新的日志服务(); }]);

Javascript 环境”,功能(环境){ 函数LogService(){ this.log=函数(消息){ if(typeof(environment.logOutputElementId)=“string”){ document.getElementById(environment.logOutputElementId).innerHTML+=message+“”; } else if(environment.hasconnel){ 控制台日志(消息); } 否则{ 警报(信息); } } } 返回新的日志服务(); }]);,javascript,angularjs,dependency-injection,Javascript,Angularjs,Dependency Injection,angularJS允许在多个文件中重新打开模块定义,javascript名称空间是完全不必要的,除非对象与angularJS应用程序不紧密 混合使用javascript名称空间和DI名称空间会使代码更容易出错,而不是更易于维护。所有这些名称空间都是完全不必要的,因为您可以使用angular module definition来命名您的代码。此外,当您需要将代码拆分为多个文件时,它会降低代码的模块化程度。每个mo只需要一个变量dule/file,实际上您根本不需要变量。因为angular是一个DI

angularJS允许在多个文件中重新打开模块定义,javascript名称空间是完全不必要的,除非对象与angularJS应用程序不紧密


混合使用javascript名称空间和DI名称空间会使代码更容易出错,而不是更易于维护。

所有这些名称空间都是完全不必要的,因为您可以使用angular module definition来命名您的代码。此外,当您需要将代码拆分为多个文件时,它会降低代码的模块化程度。每个mo只需要一个变量dule/file,实际上您根本不需要变量。因为angular是一个DI容器。我尝试在没有变量的情况下工作,但所有尝试都失败了:(由于代码组织和名称冲突,我更愿意保留名称空间。但是对于DI容器,没有名称空间冲突!除非在同一模块中定义两个名称相同的服务。我正在尝试为我的DevTeam创建一个工作指南(10 ppl),应用程序将有数百个具有不同模块、控制器等的文件。因此,如果我将方法保留在全局范围内,很有可能有人会通过定义/重写同一对象来破坏它。所有这些名称空间都是完全不必要的,因为您可以使用angular模块定义对代码进行名称空间。此外,它使您的当您需要将其拆分为多个文件时,代码模块化程度较低。每个模块/文件只需要一个变量,事实上您根本不需要变量。因为angular是一个DI容器。我尝试在没有变量的情况下工作,但我的所有尝试都失败了:(由于代码组织和名称冲突,我更愿意保留名称空间。但是对于DI容器,没有名称空间冲突!除非在同一模块中定义两个名称相同的服务。我正在尝试为我的DevTeam创建一个工作指南(10 ppl),应用程序将有数百个具有不同模块、控制器等的文件。因此,如果我将方法保留在全局范围内,很有可能有人会通过定义/重写同一对象来破坏它。嗯……我认为这会更简单:)感谢您的帮助,解决方案正在运行。嗯……我认为这会更简单:)感谢您的帮助,解决方案正在发挥作用。现在,我明白您的意思“所有的名称空间都是完全不必要的”:所有模块/服务都将存在于应用程序本身中,因此不会出现名称冲突。但是控制器呢?我看到的所有示例,都按照通常的JS方法定义控制器……我可以用与模块相同的方式制作控制器,而不定义变量吗?顺便说一句,你的代码不起作用,所以如果你能帮助我理解为什么(我不是在说语法错误),我想我会使用它并删除不必要的变量和名称空间:),代码似乎与原始代码一样工作。在angularJS中,您有多种方法来做事情,这就是为什么您可以使用简单的函数声明作为控制器。现在,我明白您的意思了“所有这些名称空间都是完全不必要的”:所有模块/服务都将存在于应用程序本身中,因此不会出现名称冲突。但是控制器呢?我看到的所有示例,都按照通常的JS方法定义控制器……我可以用与模块相同的方式制作控制器,而不定义变量吗?顺便说一句,你的代码不起作用,所以如果你能帮助我理解为什么(我不是在谈论语法错误),我想我会使用它并删除不必要的变量和名称空间:),代码似乎与原来的代码一样工作。在angularJS中,您有多种方法来做事情,这就是为什么您可以使用简单的函数声明作为控制器。
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);
var ABCS = angular.module("ABCS", [
    'ABCS.Services', 'ABCS.Configuration', 'ABCS.Controllers',
    'ABCS.Modules', 'ABCS.Services'
]);
angular.module("ABCS", ['ABCS.Services', 'ABCS.Configuration', 'ABCS.Controllers', 'ABCS.Modules', 'ABCS.Services']);
angular.module('ABCS.Configuration', []);
angular.module('ABCS.Controllers', []);
angular.module("ABCS.Modules", []);
angular.module("ABCS.Services", []);

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

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

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

  return new LogService();
}]);