AngularJS 作用域里的值复制和引用复制

对象要么是值复制要么是引用复制。字符串、数字和布尔型变量是值

复制。数组、对象和函数则是引用复制。

1.值复制:

<!doctype html>
<html ng-app="myApp">
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.3/angular.js"></script>
</head>
<body>
<div ng-controller="SomeController">
    {{ someBareValue }}
    <button ng-click="someAction()">Communicate to child</button>
    <div ng-controller="ChildController">
        {{ someBareValue }}
        <button ng-click="childAction()">Communicate to parent</button>
    </div>
</div>
    <script>
        angular.module(‘myApp‘, [])
        .controller(‘SomeController‘, function ($scope) {
            // 反模式,裸值
            $scope.someBareValue = ‘hello computer‘;
            // 设置 $scope 本身的操作,这样没问题
            $scope.someAction = function () {
                // 在SomeController和ChildController中设置{{ someBareValue }}
                $scope.someBareValue = ‘hello human, from parent‘;
            };
        })
        .controller(‘ChildController‘, function ($scope) {
            $scope.childAction = function () {
                // 在ChildController中设置{{ someBareValue }}
                $scope.someBareValue = ‘hello human, from child‘;
            };
        });
    </script>
</body>
</html>

2.引用复制:

<!doctype html>
<html ng-app="myApp">
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.3/angular.js"></script>
</head>
<body>

    <div ng-controller="SomeCtrl">
        {{ someModel.someValue }}
        <button ng-click="someAction()">Communicate to child</button>
        <div ng-controller="ChildCtrl">
            {{ someModel.someValue }}
            <button ng-click="childAction()">Communicate to parent</button>
        </div>
    </div>

    <script>
        angular.module(‘myApp‘, [])
        .controller(‘SomeCtrl‘, function ($scope) {
            // best practice, always use a model
            $scope.someModel = {
                someValue: ‘hello computer‘
            }
            $scope.someAction = function () {
                $scope.someModel.someValue = ‘hello human, from parent‘;
            };
        })
        .controller(‘ChildCtrl‘, function ($scope) {
            $scope.childAction = function () {
                $scope.someModel.someValue = ‘hello human, from child‘;
            };
        });
    </script>

</body>
</html>
时间: 2024-08-10 19:07:19

AngularJS 作用域里的值复制和引用复制的相关文章

angularjs在指令中使用子作用域引申出的‘值复制’与‘引用复制’的问题

<!DOCTYPE html> <html lang="zh-CN" ng-app="app"> <head> <meta charset="utf-8"> <title>在指令中使用子作用域</title> <link rel="stylesheet" href="../bootstrap.min.css"> </h

获取作用域里的值的4种方法

获取作用域里的值的4种方法: 1.java代码: <%request.getAttribute()%> 2.${requestScope/username} 3.<s:property value="#session.username"> 4.不知道作用域时候: <s:property value="#attr.username"/>

Angular JS 中 ng-controller 值复制和引用复制

我们知道在使用ng-app或者ng-controller指令的时候,都会创建一个新的作用域($rootScope或者是$scope),并且在使用ng-controller指令创建的作用域会继承父级作用域($rootScope或者是$scope)所有的方法和属性. 但是这里继承的属性就有一些学问了 运行如下代码: html <div ng-controller="SomeController"> {{ someBareValue }} <button ng-click=

总结:Ruby里是值传递还是引用传递

在ruby中一切都是对象,而你向方法中传递的实质上是对象的引用( object-reference).ruby中变量都是对象的引用. 先来看 def pref2(agr) agr.downcase end a2 = 'PREF2' pref2(a2) puts "#{a2}" #输出 PREF2 为什么调用了pref2后 a2还是大写的"PREF2",看一下downcase的源码就不难发现问题了. 链接:https://ruby-doc.org/core-2.4.1

转JS--通过按钮直接把input或者textarea里的值复制到粘贴板里

document.activeElement属性为HTML 5中新增的document对象的一个属性,该属性用于返回光标所在元素.当光标未落在页面中任何元素内时,属性值返回body元素. setSelectionRange(start, end) 设置选中文本起始位置与结束位置 execCommand方法是执行一个对当前文档,当前选择或者给出范围的命令     点击按钮复制textarea文本框中内容 <script type="text/javascript"> func

C++基础知识(八)---函数返回值(返回值,返回指针,返回对象,返回引用)---引用---复制构造函数(拷贝构造函数)

一.函数返回值 1.返回值: int test () { int a=1; return a; } 返回值时最简单的方式,它的操作主要在栈上,变量a在函数结束后会删除,为了返回a的值,系统会在内部建立一个临时变量保存a的值,以返回给调用该函数的表达式,调用结束后变量便不再存在.如果a是简单地数据类型也无所谓,不是很占用内存,如果a是大的自定义类型的数据,那么对a的复制将会占用比较大的内存.函数返回值是右值,不能进行运算符操作. 2.返回指针: int *test2() { int *b=new

c/c++值传递和引用传递

今天看数据结构的时候,因为是c语言版的,刚开始学的时候就对指针搞的焦头烂额,今天,发现参数传递的时候,&符号也莫名其妙,搜了一篇好文,转载下来. 一. 函数参数传递机制的基本理论 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题.基本的参数传递机制有两种:值传递和引用传递.以下讨论称调用其他函数的函数为主调函数,被调用的函数为被调函数. 值传递(passl-by-value)过程中,被调函数的形式参数作为被调函数的局部变量处理,即在堆栈中开辟了内存

老生常谈--Java值传递和引用传递

起因 前两天面试被问到了这个问题,虽然之前老早就了解过这个问题,但是并没有深入了解,所以面试的时候一下子慌了,菜是原罪,今天菜鸡来补补基础知识. 其实这个问题一直是被讨论的,常见的三种说法就是,1,Java 值传递引用传递都有,2,只有值传递,3只有引用传递,今天查了很多资料,我发现这个问题并不是随随便便就能说清楚. 先说传参 方法的参数可以分为实参和形参,实参是指被调用时传入的实际的值,在方法调用前就已经初始化完毕.而形参是指方法中用来“承接”实参的参数,它是在这个方法里有效,即作用域.方法执

引用类型变量,对象,值类型,值传递,引用传递 区别与定义

一.Java中什么叫做引用类型变量? 引用:就是按内存地址查询       比如:String s = new String();这个其实是在栈内存里分配一块内存空间为s,在堆内存里 new了一个String类型的空间,在运行时是 栈内存里的 s 指向堆内存里的那一块存储空间 基本数据类类型存的是数值本身,而引用类型变量在内存放的是数据的引用,并不是数据的本身, 引用类型变量是以间接方式去获取数据. 引用类型变量都属于对象类型,如:数组.类.字符串等都属于引用类型变量.所以,引用类型 变量里面存