Angularjs 用于在rootscope中声明多个值的语法

Angularjs 用于在rootscope中声明多个值的语法,angularjs,angularjs-scope,Angularjs,Angularjs Scope,我在rootscope中声明了一个变量,以便在其他控制器之间共享 我还需要在rootscope中放置多个变量 (function (module) { angular.module("sample", []).run(["$rootScope", function($rootScope){$rootScope.TaxPercent = 30;}]); . . . } 从句法上来说,你会怎么做呢 这是我在rootscope中仅声明一个变量的定义 (function (module) {

我在rootscope中声明了一个变量,以便在其他控制器之间共享

我还需要在rootscope中放置多个变量

(function (module)
{
    angular.module("sample", []).run(["$rootScope", function($rootScope){$rootScope.TaxPercent = 30;}]);
.
.
.
}
从句法上来说,你会怎么做呢

这是我在rootscope中仅声明一个变量的定义

(function (module)
{
    angular.module("sample", []).run(["$rootScope", function($rootScope){$rootScope.TaxPercent = 30;}]);
.
.
.
}

$rootScope
是一个对象,因此只需分配属性:

$rootScope.TaxPercent1 = 30;
$rootScope.TaxPercent2 = 40;

但不是:

$rootScope = {percent1: 30, percent2: 40};

因为您将覆盖对象的所有以前的数据集

一般来说,
$rootScope
不应用于共享变量,原因很多,前面的文章中已经解释过,如:

如果您忘记了
$rootScope.TaxPercent=30全局变量,然后在控制器内创建变量
$scope.TaxPercent
?那肯定会引起问题

在这里提供一个选项并建议使用

下面是一个角度服务工作原理的示例

从“角度常见问题”页面:

当然,全局状态很糟糕,您应该谨慎使用$rootScope,就像您(希望)在任何语言中使用全局变量一样。特别是,不要将其用于代码,只用于数据。如果您想在$rootScope上安装一个函数,那么最好将它安装到一个服务中,该服务可以被注入到需要的地方,并且更易于测试


您可以使用angular.extend一次性向对象添加多个属性。非常有效。最好使用服务在整个应用程序中共享数据。您将如何使用我在问题中所写的行以语法方式分配这些变量?因为,当我应用前两个解决方案中的任何一个时,我都会遇到设计时编译错误。不确定-传递给函数的
模块是什么?如果您已经在应用程序的其他地方定义了
“sample”
模块,则行应该是
angular.module(“sample”)。run([..
(不带[]))