我有一个在我的项目中常见的常量值,在我的两个模块中 - 我希望有一个设计,我只需要在一个模块中定义它并将值传递给另一个模块。我怎么能够 ?- Module1就像
var myApp = angular.module('myApp', ['ui.router']);
myApp.constant('constVar', 'http://45.26365.23/mydata/');
和Module2就像
var Dashboardapp =angular.module('Dashboardapp', ['ui.router']);
Dashboardapp.constant('constVar', 'http://45.26365.23/mydata/');
答案 0 :(得分:1)
为了记录,Google内部风格指南说“不要在范围内定义变量”。 (它实际上明确地说过)。请注意,这意味着特别是,但不仅仅是$ rootScope(如果您这样做,您的代码将保证会被重新审核,非常难看“这是不好的”评论)。
只需在更高级别定义它,然后在两个模块中,通常在应用程序级别(Angular 1.x为app config API中的常量定义一个可配置的位置,你可能想看一下,这很有用,因为它实际上强制执行常量)。您也可以只使用在任何模块中定义的类(只是您导入并静态使用的顶级类),或者您可以定义另一个注入的模块(对于一些简单的常量可能是过度的)。
答案 1 :(得分:0)
一种天真的方法是在模块之外定义常量:
var myConstant = 'http://45.26365.23/mydata/';
如果你有更多的常数或其他一般数据,那么或者甚至更好:
var myConfig = {
myConstant : 'http://45.26365.23/mydata/'
// other data
}
然后在模块中调用它:
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);
而不是最后一行,你可以在任何需要的地方调用常量。
答案 2 :(得分:0)
你总是可以使用'常数' Angular带来......
import * as angular from 'angular';
export default angular
.module('app.constants.foo', [])
.constant('fooAction', Object.freeze({
name: value
}))
.name;
然后你注入你的命名常量。因此,它可以在应用程序的任何地方访问(更重要的是不可变的(大多数))。