Javascript $scopes角js
我是个初学者。我阅读了angular routing教程,我对下面的代码感到怀疑,因为其中一个控制器的$scope似乎被另一个控制器访问。据我所知,我们无法访问一个控制器的$scope数据,而另一个控制器无法访问该数据。有人能解释一下这种情况吗?代码在这里运行良好Javascript $scopes角js,javascript,angularjs,routing,Javascript,Angularjs,Routing,我是个初学者。我阅读了angular routing教程,我对下面的代码感到怀疑,因为其中一个控制器的$scope似乎被另一个控制器访问。据我所知,我们无法访问一个控制器的$scope数据,而另一个控制器无法访问该数据。有人能解释一下这种情况吗?代码在这里运行良好 <html lang="en" ng-app="myApp"> <body> <div ng-controller="directoryController"> <div ng-vi
<html lang="en" ng-app="myApp">
<body>
<div ng-controller="directoryController">
<div ng-view>
</div>
</div>
</body>
<script src="angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0rc1/angular-route.min.js"></script>
<script>
var app = angular.module("myApp", ['ngRoute']);
app.config(function ($routeProvider) {
$routeProvider
.when('/', {templateUrl: 'directory.html'})
.when('/view/:id', {templateUrl: 'view.html', controller: 'viewController'})
.otherwise({redirectTo: '#'})
});
app.controller('directoryController', ['$scope', function ($scope) {
//i have defined an array called data here suppose its there
$scope.people = data;
}]);
app.controller('viewController', ['$scope', '$routeParams', function ($scope, $routeParams) {
$scope.person = $scope.people[$routeParams.id]
}]);
</script>
</html>
var-app=angular.module(“myApp”,['ngRoute']);
app.config(函数($routeProvider){
$routeProvider
.when('/',{templateUrl:'directory.html'})
.when('/view/:id',{templateUrl:'view.html',controller:'viewController'})
。否则({重定向到:'#'})
});
app.controller('directoryController',['$scope',function($scope){
//我在这里定义了一个名为data的数组,假设它在那里
$scope.people=数据;
}]);
app.controller('viewController',['$scope','$routeParams',函数($scope,$routeParams){
$scope.person=$scope.people[$routeParams.id]
}]);
角度$scope
像一棵树,主干是$rootScope
,其他每个$scope
分支都来自该或另一个$scope
,因此既然视图控制器
是directoryController
的子对象,您就可以访问其中的变量
$rootScope -> directoryController -> viewController
viewController
可以访问所有父$scope
s;directoryController
可以访问$rootScope
,而$rootScope
只能访问自身。范围通常是父范围固有的
执行摘要:
在AngularJS中,子作用域通常从其父作用域原型继承。此规则的一个例外是使用作用域:{…}
的指令——这会创建一个不典型继承的“隔离”作用域。(和带有转换的指令)此构造通常在创建“可重用组件”指令时使用。在指令中,默认情况下直接使用父范围,这意味着指令中来自父范围的任何更改都将在父范围中更改。如果设置scope:true
(而不是scope:{…}
),则该指令将使用原型继承
--
作用域层次结构
每个角度应用程序只有一个根作用域,但可能有多个子作用域
应用程序可以有多个作用域,因为某些指令会创建新的子作用域(请参阅指令文档,了解哪些指令会创建新的作用域)。创建新作用域时,它们将作为其父作用域的子作用域添加。这将创建一个树结构,它与它们所连接的DOM平行
当Angular计算{{name}}
时,它首先查看与name属性的给定元素关联的范围。如果没有找到这样的属性,它将搜索父作用域,依此类推,直到到达根作用域。在JavaScript中,这种行为称为原型继承,而子作用域原型继承自其父作用域
--