如何将对象数组分配给数组?

时间:2016-03-18 21:14:18

标签: javascript angularjs json

我有来自后端的json响应controlOwners现在我想设置对$scope.selectedOwners = []的响应,但它在控制台中给我未定义任何想法这里出了什么问题?

ctrl.js

$scope.selectedOwners = [];
if ($state.is('app.editControl')) {
          $scope.selectedOwners = angular.copy($scope.controlowners);
          console.log('EDIT CONTROL OWNERS DATA', $scope.selectedOwners);
        }

json.js

"controlOwners": [{
    "workerKey": -1093,
    "sourceFeed": null,
    "statusLookUpCode": null,
    "externalId": null,
    "createdUserText": null,
    "createdTimestamp": null,
    "modifiedUserText": null,
    "modifiedTimestamp": null,
    "stdId": "ZK84T1N",
    "ccId": null,
    "empClasId": null,
    "deptId": null,
    "fullName": "Rajasekaran, Shanmuga",
}],

2 个答案:

答案 0 :(得分:1)

我的猜测正如我在上面的评论中所述,你在对controlOwners的引用中有不正确的大小写。当你应该是大写字母('controlOwners')时,你用小写'o'('controlowners')拼写它。因此你得到一个未定义的错误。

答案 1 :(得分:0)

首先确保这不是拼写错误。你有两个:

controlOwners
       ^

controlowners
       ^

在JSON和代码中。

然后,如果输入错误仅在您的问题而不在您的代码中,并且取决于您在其他地方使用$scope.selectedOwners的方式,您可能不希望替换的引用在if语句中列出,而是让它更新现有列表(即使你必须先清除它)。

但显然,如果您的代码完全

$scope.selectedOwners = [];
if ($state.is('app.editControl')) {

而不是可能在其他时间触发的回调中的if,然后忽略它。