Javascript AngularJS中的全局变量(良好实践)

Javascript AngularJS中的全局变量(良好实践),javascript,angularjs,ionic-framework,Javascript,Angularjs,Ionic Framework,我正在寻找一种模式,以便在我的应用程序中保持全局常量。但不是控制器或工厂。所以app.constant也不是这样 我只想设置一个变量,但没有找到好的 我想在我的rootScoop中设置这个var,但没有成功。 有点像 myApp.run(function($rootScoop){ $rootScoop.global = {}; }); 当我使用该代码时,transtateFilterProvider会自动生成一个AROR。当我删除这段代码时,translateService会工作 我必须在所有

我正在寻找一种模式,以便在我的应用程序中保持全局常量。但不是控制器或工厂。所以app.constant也不是这样

我只想设置一个变量,但没有找到好的

我想在我的rootScoop中设置这个var,但没有成功。 有点像

myApp.run(function($rootScoop){
$rootScoop.global = {};
});
当我使用该代码时,transtateFilterProvider会自动生成一个AROR。当我删除这段代码时,translateService会工作

我必须在所有html视图中都有访问权限,我不想总是使用在这种情况下无用的控制器,我只想在rootScoop中设置一个全局变量


谢谢。

您收到一个错误,因为它是:

$rootScope
而不是

$rootScoop
无论如何,正确的方法是在应用程序中添加一个常量模块,如:

angular.module('yourapp', []).constant('Constants', {
    foo: 'bar'
});
但您必须在控制器中调用常量


如果使用$rootScope,请记住,您需要在模板中调用$root.global。

为什么不使用工厂/服务?这似乎是一种有棱角的方式。如果您真的不想使用它,可以尝试使用纯JS在全局对象窗口上编写变量。no angular:window.constants={}我想在HTML视图中访问,windows.constants可以这样做吗?不确定。使用window.constants或window[constants]进行尝试。如果这不起作用,您可以在模板的控制器作用域上公开它。实际上,我可以在rootScope中注入我的var,但当我这样做时,我的注入器会毫无意义地抛出异常。。。如果我删除第一行,就可以了。var app=angular.moduleapp,[];app.runfunction$rootScope{$rootScope.constants={client:{'name':'client'}};console.log$rootScope;};我不知道你想说什么;在控制器中,您可以执行以下操作以向角度世界公开全局常量对象:$scope.constants=window.constants-但请注意,您需要在所有要访问常量的控制器中执行此操作。