我刚刚了解到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
}
);
有关使用的一些问题。
答案 0 :(得分:5)
加载到value
提供商的变量在传统意义上并不是真正的全局变量。它并不位于全局名称空间中。提供者需要在您使用它的任何地方注入,因此它更像OO意义上的对象。
value
提供商是一种允许许多不同组件访问变量的方法,因此我明白为什么您将其称为全局变量。但是value
是一种分享数据的好方法,而没有实际全局变量的许多风险。
您可以查看Provider docs中不同类型的提供商,其中您value
只有一个。
1)您可以更改Angular value
(但不是与const
密切相关的内容)
2)您需要在value
注入value
,然后在其前面添加app.controller('Ctrl', function($scope, global ) {
console.log(global.db);
global.databasename = "newname";
});
的名称。例如:
app.controller('Ctrl', function($scope, global ) {
$scope.db = global.db;
});
3)如果将值复制到适当的范围,则可以从HTML访问该值:
{{1}}
答案 1 :(得分:2)
您可以inject
这些值就像注入控制器或服务一样,并且可以像修改任何其他注入对象一样修改它们。
app.controller("mySuperDuperController", function ($scope, 'globals') {
$scope.globals = globals; // <-- to access them in the template
globals.db = 'newDb'; // <-- modify their value.
});