zoukankan      html  css  js  c++  java
  • angular JS中 ‘=’与angular.copy的区别

    先来看代码:

    <b>{{test1}}</b>
    <input type="text" ng-model="test2" title="test" />
    $scope.list = 'band';
    $scope.editModi = function(idx){ $scope.editItem = $scope.list; };

    这个时候我们在视图中修改editItem的值时,list的值不变。

    <b>{{test1.name}}</b>
    <input type="text" ng-model="test2.name" title="test" />
    $scope.test1 = {
            "id":1,
            "name":"band"
        };
        $scope.test2 = $scope.test1;

    此时在视图中改变test2.name的值时,tes1.name的值也相应的改变了。

    <b>{{test1[1]}}</b>
    <input type="text" ng-model="test2[1]" title="test" />
    $scope.test1 = ['11','22','33'];
    $scope.test2 = $scope.test1;

    此时在视图中改变test2[1]的值时,tes1[1]的值也相应的改变了。

    解释:当$scope.tes1是基本类型时,$scope.test2 = $scope.test1;赋的是值,因此不会发生改变其中一个的值另一个也发生改变的情况。

    当$scope.test1是对象或数组时,$scope.test2 = $scope.test1;此时$scope.test1和$scope.test2共同指向了内存中的某一处,因此当改变其中一个值的时候,另一个值也会跟着改变。

    解决方法:angular.copy($scope.test1,$scope.test2);angular.copy做了一份数据的拷贝,此时$scope.test1和$scope.test2指向了不同的地址,只是两个地址存储的值是相同的。这个时候再改变其中一个的值就不会影响另一个了。

  • 相关阅读:
    ABP 往前端返回详细的错误信息
    ABP 报错1
    three.js 测试1
    three.js 添加 图形控制界面 gui
    three.js 设置透明度
    three.js 基础使用1
    three.js 添加环境光
    three.js 添加三维坐标系
    P2690 接苹果
    [USACO08FEB]修路Making the Grade
  • 原文地址:https://www.cnblogs.com/YuKiee/p/7704793.html
Copyright © 2011-2022 走看看