• AngularJs Scope(作用域)


    Scope(作用域)是应用在HTML(视图)和Javascript(控制器)之间的纽带.

    Scope是一个对象,有可用的方法和属性.

    Scope可以应用在视图和控制器上.

    如何使用Scope

    当你在AngularJs中创建控制器时,你可以将$scope对象当作一个参数传递:

        <div ng-app="myApp" ng-controller="myCtrl">
            <h1>{{carname}}</h1>
        </div>
        <script>
            var app = angular.module("myApp",[]);
            app.controller("myCtrl",function($scope){
                $scope.carname = "重走老街";
            })
        </script>

    当在控制器中添加$scope对象时,视图(HTML)就可以获取到scope对象的属性

    视图中,你不需要添加$scope前缀,只需要添加属性名即可,如:{{carname}}.

    Scope概述:

    AngularJs应用组成如下:

    1.View (视图),即HTML;

    2.Model(模型),当前视图可用的数据;

    3.Controller(控制器),即javascript函数,可以添加和修改属性和方法

    4.Scope是模型,是一个javascript对象,有属性和方法,这些属性和方法在视图和控制器中都可以使用。

    如果修改了视图,那么模型和控制器也会相应更新,案例:

        <div ng-app="myApp" ng-controller="myCtrl">
            <input type="text" ng-model="name">
            <h1>{{greeting}}</h1>
            <button ng-click="sayHello()">点我问候</button>
        </div>
        <script>
            var app = angular.module("myApp",[]);
            app.controller("myCtrl",function($scope){
                $scope.name = "重走老街";
                $scope.sayHello = function () {
                    $scope.greeting = "Hello " + $scope.name +"!";
                }
            })
        </script>

    Scope的作用范围:

    在大型项目中,HTML DOM中有多个作用域,这是需要知道你是用的scope对应的作用域是哪一个。

    根作用域

    所有的应用都有一个$rootScope,它可以作用于ng-app指令包含的所有HTML元素中。

    $rootScope可作用于整个应用,是各个controller 中scope 的桥梁。用rootScope定义的值,可以在各个controller中使用。

    创建控制器的时候,将$rootScope作为参数传递,可在应用中使用:

    <div ng-app="myApp" ng-controller="myCtrl">
            <h1>家族成员</h1>
            <ul>
                <li ng-repeat="x in names">{{x}} {{lastname}}</li>
            </ul>
        </div>
        <script>
            var app = angular.module("myApp",[]);
            app.controller("myCtrl",function($scope,$rootScope){
                $scope.names = ["重走老街","Tobias","Linus"];
                $rootScope.lastname = "Refsnes";
            })
        </script>
  • 相关阅读:
    为什么重写equals还要重写hashcode?
    谈谈关于Synchronized和lock
    springBoot为啥没有没有web.xml了
    springBoot整合mybatis开发
    springBoot的介绍与搭建
    Java i++原理及i=i++的问题说明
    Django学习笔记〇三——APP以及的文件结构
    Django学习笔记〇二——第一个Django项目
    Django学习笔记〇一——从web的概念引入
    MySQL学习笔记——〇六SQLAlchemy框架
  • 原文地址:https://www.cnblogs.com/old-street-hehe/p/6803090.html
Copyright © 2020-2023  润新知