CNode

angularjs中在rootScope中注册全局变量和通过constant()注册全局变量有什么区别?

问答
Lleijianning发布于10 年前最后回复10 年前3 回复6998 浏览0 收藏

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

查看回复

回复 (3)

Y
yuyang041060120#1·10 年前
  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注册就好了,建议采用全大写下划线分割的方式命名常量

L
leijianning#2·10 年前

谢谢大神的指导👍🏻 From Noder

W
wdlhao#3·10 年前

mark

参与回复
登录后即可参与回复。登录