为什么在angularjs中将范围和RootScope注入控制器

时间:2015-05-14 14:23:03

标签: angularjs model-view-controller

在Angular JS控制器中,为什么我必须同时注入作用域和根作用域,控制器的作用域不能作为rootcope的子作用,并且默认注入,如在视图中,我总是可以将范围和根范围的属性引用为裸变量.......为什么这不适用于控制器,甚至也应用于服务?

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:1)

实际上,更多用户混淆了为什么两者都在控制器中使用

$scope用于控制器和视图之间的通信。 $ scope将视图(DOM元素)绑定到viewmodel

但是从根本上看,应用程序中只有一个rootcope,它在应用程序的所有组件之间共享。 $rootscope一个全局变量。所有其他$范围都是$rootScope.

的子项

例如

有两个控制器都有范围

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

 app.controller('Ctrl1', function ($scope, $rootScope) {
 $scope.msg = 'World';
 $rootScope.name = 'AngularJS';
 });

 app.controller('Ctrl2', function ($scope, $rootScope) {
 $scope.msg = 'Dot Net Tricks';
 $scope.myName = $rootScope.name;
 });

rootscope只能用于所有控制器,但范围不是来自另一个控制器

注意

  

当您使用带有$ rootScope对象的ng-model时,AngularJS会更新   那些对象在控制器的特定$范围内但不在   全局级别$ rootScope。为每个控制器创建一个私有$ scope   将它绑定到视图。