angularjs中在rootScope中注册全局变量和通过constant()注册全局变量有什么区别?
发布于 8 年前 作者 leijianning 6384 次浏览 来自 问答

哪位大神指点指点,拜谢!!!

3 回复
  1. 概念不同。$rootScope是angular重要的数据结构之一,是数据的载体。constant实际上是注册常量(更准确的说是服务)。
  2. 注入时机不同。constant注册的常量可以在配置时、运行时注入,$rootScope只能在运行时注入。看个例子
angular.module('app', [])
    .constant('VERSION', '2.0')
    .config(function (VERSION) {

    })
    .run(function ($rootScope) {
        $rootScope.version = 2.0;
    });
  1. 可变性不同,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注册就好了,建议采用全大写下划线分割的方式命名常量

谢谢大神的指导👍🏻 From Noder

回到顶部