Javascript 在控制器angularjs之间传递常量值
在我的项目中,在我的两个模块中,我有一个常见的常量值——我希望有一个设计,我只需要在一个模块中定义它,然后将该值传递给另一个模块。我该怎么办- 模块1类似于Javascript 在控制器angularjs之间传递常量值,javascript,angularjs,single-page-application,Javascript,Angularjs,Single Page Application,在我的项目中,在我的两个模块中,我有一个常见的常量值——我希望有一个设计,我只需要在一个模块中定义它,然后将该值传递给另一个模块。我该怎么办- 模块1类似于 var myApp=angular.module('myApp',['ui.router']); myApp.constant('constVar','http://45.26365.23/mydata/');一种简单的方法是在模块外定义常量: var myConstant = 'http://45.26365.23/mydata/';
var myApp=angular.module('myApp',['ui.router']);
myApp.constant('constVar','http://45.26365.23/mydata/');代码>一种简单的方法是在模块外定义常量:
var myConstant = 'http://45.26365.23/mydata/';
var myApp = angular.module('myApp', ['ui.router']);
myApp.constant('constVar', myConfig.myConstant);
var Dashboardapp =angular.module('Dashboardapp', ['ui.router']);
Dashboardapp.constant('constVar', myConfig.myConstant);
或者,如果您有更多的常量或其他常规数据,可能会更好:
var myConfig = {
myConstant : 'http://45.26365.23/mydata/'
// other data
}
然后在模块中调用它:
var myConstant = 'http://45.26365.23/mydata/';
var myApp = angular.module('myApp', ['ui.router']);
myApp.constant('constVar', myConfig.myConstant);
var Dashboardapp =angular.module('Dashboardapp', ['ui.router']);
Dashboardapp.constant('constVar', myConfig.myConstant);
另一种可能是只在一个模块(即您的主模块)中定义它,然后将它注入到其他模块中:
var myApp = angular.module('myApp', ['ui.router']);
myApp.constant('constVar', 'http://45.26365.23/mydata/');
var Dashboardapp =angular.module('Dashboardapp', ['ui.router', 'myApp']);
Dashboardapp.constant('constVar', myApp.constant);
你可以在需要的地方调用常量,而不是最后一行。你可以随时使用随附的“常量”
import * as angular from 'angular';
export default angular
.module('app.constants.foo', [])
.constant('fooAction', Object.freeze({
name: value
}))
.name;
然后注入命名常量。因此,它可以在应用程序中的任何地方访问(更重要的是,它是不可变的(大部分))。对于记录,谷歌内部风格指南说“不要在范围上定义变量。”(它实际上明确地说)。请注意,这意味着,$rootScope(如果您这样做了,您的代码肯定会在审查中被踢回去,并带有非常难看的“THIS IS BAD”注释)
只需在比两个模块更高的级别上定义它,通常是在应用程序级别(Angular 1.x在应用程序配置API中为常量定义了一个可配置的位置,您可能需要查找它,这很有用,因为它实际上强制了常量)。您也可以只使用在没有任何模块中定义的类(只使用静态导入和使用的顶级类),或者您可以定义另一个您注入的模块(对于一些简单的常量来说,这可能是多余的) 您可以将该常量放入$rootScope
&在您的任何控制器中访问它app@AgamBanga我不确定$rootScope
是否可以在应用程序之间共享常数。创建一个包含所有常数的单独模块,并在需要时/在任何地方插入该模块如何。谢谢,这节省了我的时间-新手,在这上面浪费了两天..呸@GiovaniVercauteren是的,这将是一种增强的、更优雅的方法。谢谢你分享你的想法!看来我们都在考虑类似的方法+感谢您的解释和提及谷歌风格指南,它强调好的和坏的做法。