首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角js中的$scopes

角js中的$scopes
EN

Stack Overflow用户
提问于 2016-02-09 07:18:53
回答 2查看 65关注 0票数 2

我是个角的初学者。我学习了角路由教程,我对下面的代码表示怀疑,在这些代码中,一个控制器的$scope似乎被另一个控制器访问。据我所知,我们无法访问一个控制器的$scope的数据,而另一个控制器则无法访问。有人能解释一下这种情况吗?密码在这里很好。

代码语言:javascript
复制
<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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-09 07:24:59

$scope就像一棵树,树干是$rootScope,每个其他的$scope分支都来自这个或另一个$scope,所以由于您的viewControllerdirectoryController的子代,所以可以访问其中的变量。

代码语言:javascript
复制
$rootScope -> directoryController -> viewController

viewController可以访问所有父$scopedirectoryController可以访问$rootScope$rootScope只能访问自己。

票数 3
EN

Stack Overflow用户

发布于 2016-02-09 08:31:36

从父作用域中固有的作用域。

执行摘要: 在AngularJS中,子作用域通常是从其父作用域中继承的。这个规则的一个例外是使用scope: { ... }的指令--这会创建一个“隔离”范围,而这个作用域并不是原型继承的。(以及带有transclusion的指令)这个构造在创建“可重用组件”指令时经常使用。在指令中,父作用域默认直接使用,这意味着来自父作用域的指令中的任何更改也将在父作用域中更改。如果您设置了scope:true (而不是scope: { ... }),那么该指令将使用原型继承。

-- AngularJS Wiki -理解Scopes

范围层次 每个角应用程序都有一个根范围,但可能有几个子作用域。 应用程序可以有多个作用域,因为有些指令会创建新的子作用域(请参阅指令文档,查看哪些指令创建了新的作用域)。当创建新的作用域时,它们将作为其父作用域的子作用域添加。这创建了一个树结构,它与它们所连接的DOM平行。 当角计算{{name}}时,它首先查看与名称属性的给定元素关联的作用域。如果找不到此类属性,则会搜索父作用域等,直到到达根范围为止。在JavaScript中,这种行为称为原型继承,而子作用域通常是从其父级继承的。

-- AngularJS开发人员指南--范围层次结构

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35286060

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档