使用 Angular 将数组复制到对象中的对象

Copy Array to Object in Object with Angular

我正在学习 Angular,我正在做一些例子来理解 angular.copy。我想要做的是创建一个带有服务的对象,然后创建一个包含服务对象的某些元素的新对象。

完整代码示例:HERE

这是服务的 "Data" 对象:

return {
    name: "hello",
    toys: ["asd", "lol"],
    food: ["apple"],
    phones: ["samsung", "lg", "iphone"]
};

在控制器中,我复制对象,创建一个新对象,然后将旧对象的一些元素复制到其中:

$scope.oldData = angular.copy(Data);
$scope.newData = {};

$scope.newData.name = oldData.name;

$scope.newData.toys = oldData.toys;

$scope.newData.phones = oldData.phones;

我希望用户只显示三个元素:名称、玩具数组和电话数组:

    <h1>{{newData.name}}</h1>

<h1>Toys:</h1>
<ul>
  <li ng-repeat="toy in newData.toys">{{ toy }}</li>
</ul>


<h1>Phones:</h1>
<ul>
  <li ng-repeat="phone in newData.phones">{{ phone }}</li>
</ul>

为什么不起作用?我做错了什么?

oldData 是范围变量,不是普通的 javascript 变量。

$scope.oldData

而不是

oldData

代码

$scope.oldData = angular.copy(Data);
$scope.newData = {};

$scope.newData.name = $scope.oldData.name;

$scope.newData.toys = $scope.oldData.toys;

$scope.newData.phones = $scope.oldData.phones;

或者任何一种方式都可以做到 var oldData

Demo

您在使用 oldData 之前没有添加 $scope。检查更新的 plunkr http://plnkr.co/edit/znoKheLX3aMVHpNo7lh4?p=preview

 $scope.oldData = angular.copy(Data);
 $scope.newData = {};

 $scope.newData.name = $scope.oldData.name;

 $scope.newData.toys = $scope.oldData.toys;

 $scope.newData.phones = $scope.oldData.phones;

您正在使用 oldData 但您已经定义了 $scope.oldData

     var oldData = angular.copy(Data);
     $scope.newData = {};

     $scope.newData.Name = oldData.name;

     $scope.newData.toys = oldData.toys;

     $scope.newData.phones = oldData.phones;

here固定插件

你必须写范围对象 $scope.newData.name = $scope.oldData.name; ...

当我 运行 你的代码时,我得到的错误是 oldData is not defined。那是因为您正在使用 $scope.newData.Name = oldData.name; 但 javascript 引擎在此范围内找不到变量 oldData

您有旧数据附加到 $Scope。所以你必须使用 $scope.newData.Name = $scope.oldData.name;