在控制器angularjs中传递一个恒定值

时间:2017-04-25 11:09:27

标签: javascript angularjs single-page-application

我有一个在我的项目中常见的常量值,在我的两个模块中 - 我希望有一个设计,我只需要在一个模块中定义它并将值传递给另一个模块。我怎么能够 ?- 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/');  

3 个答案:

答案 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;

然后你注入你的命名常量。因此,它可以在应用程序的任何地方访问(更重要的是不可变的(大多数))。