angularjs中在rootScope中注册全局变量和通过constant()注册全局变量有什么区别?
哪位大神指点指点,拜谢!!!
3 回复
- 概念不同。$rootScope是angular重要的数据结构之一,是数据的载体。constant实际上是注册常量(更准确的说是服务)。
- 注入时机不同。constant注册的常量可以在配置时、运行时注入,$rootScope只能在运行时注入。看个例子
angular.module('app', [])
.constant('VERSION', '2.0')
.config(function (VERSION) {
})
.run(function ($rootScope) {
$rootScope.version = 2.0;
});
- 可变性不同,constant注册的常量无法修改,$rootScope可以
angular.module('app', [])
.constant('VERSION', '2.0')
.run(function ($rootScope) {
$rootScope.version = 2.0;
$rootScope.$on('version:change', function (e, newVersion) {
$rootScope.version = newVersion;
});
});
一般会把一些易变的数据挂载到$rootScope上,常量直接使用constant注册就好了,建议采用全大写下划线分割的方式命名常量