AngularJS API之copy深拷贝

angular提供了一个可以复制对象的api——copy(source,destination),它会对source对象执行深拷贝。

使用时需要注意下面几点:

  • 如果只有一个参数(没有指定拷贝的对象),则返回一个拷贝对象
  • 如果指定了destination,则会深拷贝对象复制给destination
  • 如果source是null或者undefined,那么会直接返回source
  • 如果source就是desitination,那么会报错。

下面看看使用样例:

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script src="http://apps.bdimg.com/libs/angular.js/1.2.16/angular.min.js"></script>
</head>
<body ng-app="copyExample">
    <div ng-controller="ExampleController">
        <form novalidate class="simple-form">
            Name: <input type="text" ng-model="user.name" /><br />
            E-mail: <input type="email" ng-model="user.email" /><br />
            Gender:
            <input type="radio" ng-model="user.gender" value="male" />
            male
            <input type="radio" ng-model="user.gender" value="female" />
            female
            <br />
            <button ng-click="reset()">RESET</button>
            <button ng-click="update(user)">SAVE</button>
        </form>
        <pre>form = {{user | json}}</pre>
        <pre>master = {{master | json}}</pre>
    </div>

    <script>
    angular.module('copyExample', [])
    .controller('ExampleController', ['$scope', function($scope) {
        $scope.master= {};

        var test1;
        console.log(angular.copy(test1));//undefined
        var test3=null;
        console.log(angular.copy(test2));//undefined

        var test2 = "a";
        // console.log(angular.copy(test2,test2));//error!!

        $scope.update = function(user) {
           // Example with 1 argument
           $scope.master= angular.copy(user);
        };

        $scope.reset = function() {
            // Example with 2 arguments
            angular.copy($scope.master, $scope.user);
            console.log($scope.master);
            console.log($scope.user);
        };

       $scope.reset();
    }]);
    </script>
</body>
</html>

本文转自博客园xingoo的博客,原文链接:AngularJS API之copy深拷贝,如需转载请自行联系原博主。

时间: 2024-10-02 18:17:33

AngularJS API之copy深拷贝的相关文章

AngularJS API之copy深拷贝详解及实例_AngularJS

angular提供了一个可以复制对象的api--copy(source,destination),它会对source对象执行深拷贝. 使用时需要注意下面几点: 如果只有一个参数(没有指定拷贝的对象),则返回一个拷贝对象 如果指定了destination,则会深拷贝对象复制给destination 如果source是null或者undefined,那么会直接返回source 如果source就是desitination,那么会报错. 下面看看使用样例: <html> <head> &

AngularJS API之equal比较对象

使用情况 1 首先,所有满足 a === 3 这种的对象,在angular.equals(a,b)中都会返回真 2 所有对象的类型,以及属性值都相同的,也会返回真 3 NaN和NaN也会返回真(在javascript中,返回的是假) 4 正则也会返回真(在javascirpt,/abc/ /abc/被认为是不相等的) 样例 <html> <head> <meta http-equiv="Content-Type" content="text/ht

AngularJS API之$injector ---- 依赖注入

推断式注入 这种注入方式,需要在保证参数名称与服务名称相同.如果代码要经过压缩等操作,就会导致注入失败. app.controller("myCtrl1", function($scope,hello1,hello2){ $scope.hello = function(){ hello1.hello(); hello2.hello(); } }); 标记式注入 这种注入方式,需要设置一个依赖数组,数组内是依赖的服务名字,在函数参数中,可以随意设置参数名称,但是必须保证顺序的一致性. v

AngularJS API之bootstrap启动

对于一般的使用者来说,AngularJS的ng-app都是手动绑定到某个dom元素.但是在一些应用中,这样就显得很不方便了. 绑定初始化 通过绑定来进行angular的初始化,会把js代码侵入到html中,但是对于新手使用来说,还是足够了! <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script s

AngularJS API之toJson 对象转为JSON

toJson()能把对象序列化为json 方法讲解 这个方法最多支持2个参数: angular.toJson(obj, pretty); obj 是想要转换的对象, pretty 可以调节格式化的样式,按照API的介绍这个是空格的个数.(不过在控制台,空格的个数是一样的,差别还在研究) 样例参考 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ut

AngularJS API之isXXX()

Angular中保存了很多的判断方法,可以用来验证对象是否符合某种要求,详细的参考代码样例即可 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script src="http://apps.bdimg.com/libs/angular.js/1.2.16/angular.min.js"

AngularJS中的API(接口)简单实现_AngularJS

AngularJS API API 意为 Application Programming Interface(应用程序编程接口). AngularJS 全局 API AngularJS 全局 API 用于执行常见任务的 JavaScript 函数集合,如: 比较对象 迭代对象 转换对象 全局 API 函数使用 angular 对象进行访问. 以下列出了一些通用的 API 函数:   API 描述 angular.lowercase() 转换字符串为小写 angular.uppercase() 转

利用angular.copy取消变量的双向绑定与解析_AngularJS

首先我们来看看示例代码 <body ng-app="app"> <div ng-controller="CopyController"> <div> data: <input ng-model="user.data" /><br> user.data: {{user.data}} <br> user1.data: {{user1.data}} <br> <b

VB5.0与Windows API 间的呼叫技巧

一般会使用WINDOW API的情况,实在是因为VB本身不提供某些功能,但是,程式所需又不得不然,例如:读取Registry内的资料,VB只提供SaveSetting.Getsetting 等系列的指令,但是它只能读取特定地区的值,要读.删.更动其他区域的值时,就无法使用.再如:仔细看一看Combo Box的Events,其中没有MouseMove,但这是我们经常用上的一个Event,那该如何呢?是的,那只有透过Winodow API.而VB呼叫Window API一般不都使用API检视员,直接