我有一个多页的AngularJS Web应用程序,可用作分析仪表板。我目前正在使用$ scope来创建变量,因此我可以在HTML页面上动态显示一些数据。无论用户访问的是哪个页面,都不会创建全局范围的$ scope变量,我想将变量限制在他们的页面和页面中。由于我是Angular的新手,我不知道该怎么做。关于我能做什么的任何想法?
答案 0 :(得分:4)
$范围变量不是全局变量;它们特定于控制器。如果您需要特定于每个页面的变量,请在每个页面上放置一个控制器(并且不要将控制器添加到父元素,因为它的作用域将被继承)。
答案 1 :(得分:1)
为每个页面创建单独的控制器。 nt global中的$ scope。其范围仅限于其控制器
答案 2 :(得分:1)
您的$scope
基于控制器,因此要制作特定于页面的内容,请执行以下操作:
var app = angular.module('app', []);
app.controller('pageOne', ['$scope', function ($scope) {
$scope.forThis = "value for page one controller";
}]);
app.controller('pageTwo', ['$scope', function ($scope) {
$scope.forThis = "value for page two controller";
}]);
答案 3 :(得分:0)
是的,您需要调用controllerAs语法。无论是在路由中还是在HTML元素中执行此操作都无关紧要。但这允许您在Angular中使用命名空间。在下面的示例中,我假设您正在调用HTML元素上的ng-controller指令。
您的HTML将是:
<div ng-controller="MyController as my">
{{my.var}}
</div>
你的控制器将是
.controller("MyController", function() {
this.var = "hello world";
}
这是自Angular 1.3.X以来实现的,如果我是正确的。 $ scope实际上是污染,因为它增加了原型继承链控制器使用。即子控制器执行 从父项继承$ scope 变量。