Angular Global变量与$ scope具有相同的可见性和用法吗?

Ala*_*an2 0 angularjs

我刚刚了解到Angular有全局变量:

角度值

var app = angular.module('mySuperDuperApp', ['SomeExternalModule']);

// Define global variables
app.value('globals', {
        db : null,
        databasename : "serviceapp",
        image_max_height: 620,
        image_quality: 0.7
    }
);
Run Code Online (Sandbox Code Playgroud)

有关使用的一些问题.

  • 全局变量的值是否可以更改?
  • 要更改它(如果可能的话),我可以在任何控制器脚本中通过它的名称引用它,例如db吗?
  • 我只能使用名称访问HTML中的全局变量吗?

Kay*_*ave 5

加载到value提供者中的变量在传统意义上并不是真正的全局变量.它不在全球名称空间中.提供者需要在您使用它的任何地方注入,因此它更像OO意义上的对象.

一个value提供者是一个办法,让许多不同的组件访问变量,所以我明白你为什么称它是全球性的.但是,在value没有实际全局变量风险的情况下,a 是一种分享数据的好方法.

您可以在这里查看不同类型的提供商,您将看到的提供商文档value只是一个.

1)你可以改变一个角度value (但不是一个const密切相关的角度)

2)你需要value在你使用它的任何地方注入它,然后在它前面添加你的名字.value例如:

app.controller('Ctrl', function($scope, global ) {
     console.log(global.db);
     global.databasename = "newname"; 
});
Run Code Online (Sandbox Code Playgroud)

3)如果将值复制到适当的范围,则可以从HTML访问该值:

app.controller('Ctrl', function($scope, global ) {
     $scope.db = global.db;
});
Run Code Online (Sandbox Code Playgroud)