Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angular.copy-需要更多说明_Javascript_Angularjs - Fatal编程技术网

Javascript Angular.copy-需要更多说明

Javascript Angular.copy-需要更多说明,javascript,angularjs,Javascript,Angularjs,我看到一个样本工作如下。。看到这个例子后,我有两个问题需要理解angular.copy有人能帮我理解吗 下面是完整的html和js代码:- <!DOCTYPE html> <html ng-app="parking"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>C

我看到一个样本工作如下。。看到这个例子后,我有两个问题需要理解
angular.copy
有人能帮我理解吗

下面是完整的html和js代码:-

<!DOCTYPE html>
<html ng-app="parking">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Car Parking</title>
    <link rel="stylesheet" href="">
    <script src="js/angular.js"></script>
    <script>
        var myApp = angular.module("parking", []);
        myApp.controller('parkingCtrl', ['$scope', function($scope){

            $scope.cars = [
                {plate: '6MBV006'},
                {plate: '5BBM299'},
                {plate: '5AOJ230'}
            ]

            $scope.park = function (car) {
                $scope.cars.push(angular.copy(car));
                console.log(angular.copy(car));
                delete $scope.car;
            }

        }]);
    </script>
</head>
<body ng-controller="parkingCtrl">
    <h3>[Packt] Parking</h3>
    <table>
        <thead>
            <tr>
                <th>Plate</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td ng-repeat="car in cars">{{car.plate}}</td>
            </tr>
        </tbody>
    </table>
    <label for="plate">
        <input type="text" ng-model="car.plate">
    </label>    
    <button ng-click="park(car)">Park</button>
</body>

停车场
var myApp=angular.module(“parking”,[]);
myApp.controller('parkingCtrl',['$scope',函数($scope){
$scope.cars=[
{图版:'6MBV006'},
{图版:'5BBM299'},
{图版:'5AOJ230'}
]
$scope.park=功能(汽车){
$scope.cars.push(角度复制(car));
控制台日志(角度副本(汽车));
删除$scope.car;
}
}]);
[Packt]停车场
盘子
{{car.plate}
公园
  • 单击“我正在从”按钮传递汽车后,如何将
    汽车牌照
    从输入框检索到
    停车(汽车)
    功能

  • 我们可以简单地将对象推送到数组,那么使用
    $scope.cars.push(angular.copy(car))的原因是什么它到底为我们做了什么

  • 为什么要删除对象
    delete$scope.car

  • 有谁能帮我理解这个角度背后的逻辑吗


    Angular正在为您在名为
    car
    的范围内自动创建一个属性,并使用文本输入填充
    car
    plate
    属性

    然后,代码将创建该对象的“深度副本”以推入数组
    angular.copy
    创建对象的“深度副本”,而不是将对该对象的引用推入数组。阅读更多:

    删除$scope.car对象只是从$scope中删除该属性的一种快速方法,因此,如果用户键入新的车牌号,angular将重新创建该属性。在所示示例中,您确实不需要使用
    angular.copy

  • 因为当您将
    car.plate
    声明为文本框的
    ng model
    时,会自动在范围上为您创建一个car对象

  • 谁说你需要用angular.copy?想象一下,你在每辆车旁边都有一个编辑按钮,你想打破2 方式 故事中显示的汽车和正在驾驶的汽车之间的绑定 编辑,例如,直到用户单击“确认编辑”按钮, 然后,使用angular.copy创建所显示对象的副本 在ng中重复此操作,以便在用户键入时不会更改 某物angular.copy用于断开对对象的引用。 如果删除这些,则会导致
    [ngRepeat:dupes]在
    不允许使用中继器。使用“跟踪方式”表达式指定唯一
    键。
    错误,然后可以通过跟踪解决。有效地 每次通过时,使用
    angular.copy
    创建一个新的汽车对象 进入阵列

  • 要创建并每次向列表中添加一个新的car对象,您可以删除scope属性以将其重新实例化为一个新对象,也可以将$scope.car的副本传递给列表,以便将每个项视为不同的实体


  • 它不在ng repeat内…ng repeat内的车辆位于ng repeat范围内only@link64我的错,没有正确地看小提琴,更正了我的答案。如果你删除了
    car
    属性,那么就没有必要创建副本。因此,您的答案没有完全涵盖问题2:原因是什么?他需要创建一个副本以存储在$scope.cars数组中。