使用 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
您在使用 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;
我正在学习 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
您在使用 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;