AngularJS 0005:作用域

angularJS中有一个重要的属性Scope,作用域。
web编程中,我们需要获取页面中的某个控件,某个属性,一般我们都用到document或者类似的一个对象来获取整个表单的内容。
在angularJS中,
Scope(作用域) 是应用在 HTML (视图) 和 JavaScript (控制器)之间的纽带。
Scope 是一个对象,有可用的方法和属性。
Scope 可应用在视图和控制器上

Scope的使用

对一个值初始化,如下代码
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="Scripts/angular.min.js" ></script>
</head>
<body>
    
    <!--Scope简单使用-->
    <div ng-app="myProgram" ng-controller="myCtrl">
        <h1>{{heroName}}</h1>
    </div>
    
    <script>
        var app = angular.module('myProgram', []);
        app.controller('myCtrl', function ($scope) {
        $scope.heroName = "疾风剑豪 亚索";
    });
</script>


</body>
</html>

结果


页面显示了初始结果


如上,JS中通过$scope获取到了html对象,然后$scope.heroName取到属性进行赋值。


angularJS的组成主要为M,V,C,
它们是:
View,视图,用于展示和接收数据的,即html页面;
Model,模型,视图中的数据;
Controller,控制器,javascript函数,用户对视图的数据或者属性进行修改,展示和接收不同的交互结果。
scope 我们可以理解为是一个 JavaScript 对象,带有属性和方法,这些属性和方法可以在视图和控制器中使用。
比如
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="Scripts/angular.min.js" ></script>
</head>
<body>
    
    <!--Scope简单使用-->
    <div ng-app="myProgram" ng-controller="myCtrl">
        <input ng-model="heroName">
        <h1>我最爱使用的英雄是 {{heroName}}</h1>


    </div>
    
    <script>
    var app = angular.module('myProgram', []);


    app.controller('myCtrl', function ($scope) {
        $scope.heroName = "德邦总管 赵信";
    });
</script>


</body>
</html>
结果


输入框的内容修改后,显示的内容也会跟着修改。这就是常用的视图数据更新后,模型和控制器的数据也要更新。

Scope 作用范围


scope 有自己的作用域,在复杂的项目中,DOM有很多作用域,我们来看看scope的作用域。
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="Scripts/angular.min.js" ></script>
</head>
<body>
    <!--作用域-->
<div ng-app="myProgram" ng-controller="myCtrl">
        <ul>
            <li ng-repeat="x in names">{{x}}</li>

        </ul>

    </div>
    <script>
    var app = angular.module('myProgram', []);

    app.controller('myCtrl', function ($scope) {
        $scope.names = ["英雄联盟", "王者荣耀", "穿越火线"];
    });
</script>


</body>
</html>
结果

使用ng-repeat循环数组内的每一个值,每个重复项都访问了当前的重复对象:
每个 <li> 元素可以访问当前的重复对象,这里对应的是一个字符串, 并使用变量 x 表示。


根作用域
所谓根作用域,是指在整个页面中有一个总的scope,叫做$rootScope,它能获取所有html元素,能获得各个scope,使用根作用域来在各controller中进行数据交换。
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="Scripts/angular.min.js" ></script>
</head>
<body>
    <!--根作用域-->
    <div ng-app="myProgram" ng-controller="myCtrl">
        <h1>{{heroName}} 英雄列表:</h1>
        <ul>
    <li ng-repeat="x in names">{{x}} {{heroName}}</li></ul>

    </div>

<script>
    var app = angular.module('myProgram', []);

    app.controller('myCtrl', function ($scope, $rootScope) {
        $scope.names = ["时间刺客", "皮城法警", "迅捷斥候"];
        $rootScope.heroName = "英雄联盟 ";
    });
</script>

</body>
</html>
效果

$rootScope 作为参数传递,可在应用中使用。

本文代码: http://download.csdn.net/detail/yysyangyangyangshan/9699263

猜你喜欢

转载自blog.csdn.net/yysyangyangyangshan/article/details/53425956
今日推荐