在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)?
添加最外层控制器(父作用域)的正确方法是存储此常量吗?
答案 0 :(得分:1)
您可以将CONFIG添加到“父”范围(外部元素的范围)或$rootScope。
注意,具有隔离范围的指令不会从“父”div继承属性。
答案 1 :(得分:1)
您只能在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: - 但更喜欢的方法是使用常量并将它们注入控制器,就像你在问题中所说的那样。 而且你只能在run block中使用它,因为config block不会让你使用$ rootScope的服务。