我可以在不注入控制器的情况下在 Angular 中使用全局常量吗?
Can I use a global constant in Angular without injection into controller?
在coffeescript中,我定义了一个常量对象:
angular
.module 'main',
[]
.constant 'CONFIG',
IMAGEROOT: 'http://some-img.s3-website-ap-southeast-1.amazonaws.com/'
在 html 中,我像这样使用常量:
<img ng-src="{{CONFIG.IMAGEROOT}}assets/img/
这可以像这样完成:
.controller 'HomeCtrl', ($scope, CONFIG) ->
$scope.CONFIG=CONFIG
虽然这很好用,但每个控制器都需要从 $scope.CONFIG=CONFIG
开始,这看起来很笨拙。有没有办法使常量全局(任何$scope都可以访问)?
添加最外层控制器(父范围)来存储此常量的正确方法是否正确?
您可以将 CONFIG 添加到"父"范围(外部元素的作用域)或$rootScope。
请注意,具有独立作用域的指令不会从"父"div 继承属性。
在 app.run() 块中,您只能做一件事,将值应用于可跨应用程序访问的$rootScope。
app.run(function($rootScope) {
// you can inject any instance here
$rootScope.IMAGEROOT='http://some-img.s3-website-ap-southeast-1.amazonaws.com/';
});
Ps:-但是首选方法是使用常量并将它们注入控制器中,正如您在问题中已经说过的那样。并且您只能在运行块中使用它,因为配置块不会为您提供使用$rootScope的服务。
相关文章:
- 全局变量和全局对象的属性之间有什么区别吗
- 正在全局范围中查找JavaScript函数
- delete关键字在全局变量上的不同行为
- 在javascript函数中设置全局变量
- 如何将getJson的响应保存在全局变量中
- 全局对象是属于哪个类的对象
- Javascript全局onclick监听器
- 从Javascript方法返回全局变量
- 访问jsrender模板中的全局javascript变量并更新它
- Javascript-在哪里放置常量,全局或本地
- 我可以在不注入控制器的情况下在 Angular 中使用全局常量吗?
- Meteor:全局常量未从app/lib/_constants.js中获取
- 如何循环遍历常量的全局命名空间?
- 在AngularJS中创建和访问全局常量
- Javascript / jQuery中的Access Rails全局常量
- 为什么我不应该在JavaScript中为常量使用全局变量呢?
- NodeJs定义全局常量
- PHP在PHP中设置全局常量中的硬编码URL
- 用javascript es6编写全局常量的正确方法是什么
- 如何在Angularjs中创建这个全局常量,以便在控制器之间共享