限制AngularJS中的$ scope

时间:2015-06-14 18:23:57

标签: javascript angularjs angularjs-directive angularjs-scope

我有一个多页的AngularJS Web应用程序,可用作分析仪表板。我目前正在使用$ scope来创建变量,因此我可以在HTML页面上动态显示一些数据。无论用户访问的是哪个页面,都不会创建全局范围的$ scope变量,我想将变量限制在他们的页面和页面中。由于我是Angular的新手,我不知道该怎么做。关于我能做什么的任何想法?

4 个答案:

答案 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";
}]);

http://jsfiddle.net/Lzpp3ve3/

答案 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 变量。