gpt4 book ai didi

javascript - 定义 AngularJS 工厂和 Controller 可访问的全局函数和属性

转载 作者:行者123 更新时间:2023-11-28 19:45:27 24 4
gpt4 key购买 nike

我正在开发 AngularJS 应用程序。当抛出错误时,我想对错误进行一些自定义处理。为此,我执行了以下操作:

var myApp = angular.module('myApp', []);
myApp.factory('$exceptionHandler', function($rootScope) {
return function(exception, cause) {
try {
console.log('Unhandled error happening in version ' + $rootScope.APP_VERSION);
console.log('Error happened at ' + $rootScope.getFormattedDateTime());
} catch (uex1) {
console.log('Unable to log unhandled exception.');
}
};
});

myApp.run(function ($rootScope) {
$rootScope.APP_VERSION = '1.0';
$rootScope.getFormattedDateTime = function() {
return '--';
};
});

当我运行此代码时,我得到 this error 。我想我无法将 $rootScope 添加到工厂声明中。如果是这种情况,我如何定义全局可访问的函数和变量,以便我可以在 Controller 中以及从该工厂访问它们?

非常感谢您提供的任何帮助。

最佳答案

你不能将 $routeScope 注入(inject)到工厂中,这不是一个好主意

您能做的最好的事情就是定义一个新工厂,并将您的属性定义到该工厂中,如下所示:

   app.factory('getAppInfoFactory',function(){
return{
getAppVersion:function(){
return APP_VERSION = '1.0';
},
getFormattedDateTime : function() {
return '--';
}
});

然后你就可以随时随地使用这个工厂,就像这样:

  myApp.factory('$exceptionHandler', function(getAppInfoFactory) {
return function(exception, cause) {
try {
console.log('Unhandled error happening in version ' + getAppInfoFactory.getAppVersion());
console.log('Error happened at ' + getAppInfoFactory.getAppInfoFactory());
} catch (uex1) {
console.log('Unable to log unhandled exception.');
}
};
});

关于javascript - 定义 AngularJS 工厂和 Controller 可访问的全局函数和属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24357077/

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