我在这里初始化

 $scope.statuses = [];


然后,如果我只是简单地将$ http.get中的数据设置为$ scope变量,那“可行”,但我需要对其进行更多过滤。

$scope.statuses = result.data.Devices;
console.log($scope.statuses);


这将在开发工具控制台输出中返回像这样的数据数组


  0:对象
    $$ hashKey
  :
  “对象:5”
  援助
  :
  “ oAAABTUAAg ==”
  DKiIndex
  :
  “ DKi00000002”
  DefaultPayload
  :
  “ C:\ ProgramData \”
  设备编号
  :
  “ 00022B9A000000010001”
  设备状态
  :
  3
  清单编号清单
  :
  数组[3]
  PendingManifestId
  :
  空值
  待处理时间戳
  :
  “ 0001-01-01T00:00:00”
  沙
  :
  “ R2tiZRQgY / iohXZt5O4HaQwtVe / adWU2VOcKaelJ3Us =”
  StagedManifestIdList
  :
  数组[0]


但是我只想要一些特定的数据

$scope.statuses = result.data.Devices.DeviceStatus;


为什么说“未定义”,我该怎么做?

所以0:对象DeviceStatus在那..:/

<div ng-app="app" ng-controller="DeviceController as vm">


...
        <tr ng-repeat="device in vm.devices">
             <td>{{device.DeviceId}}</td>
             <td>{{device.DeviceStatus}}</td>
             <td>{{device.Aid}}</td>
             <td>{{device.Sha}}</td>
        </tr>
...


从本质上讲,我希望先将Javascript / angular(.js)中的数据处理到ng-repeat循环中

因此,$ scope甚至是正确的东西吗?

我知道我有一些数据需要更改

字段中的某些数据用[]括起来,例如[01,02,03]这样做
{{device.aid.join(',')}}将“解决” []问题,但我需要具有这样的功能?我在哪里可以使用?

// usage {{displayArchived(item.archives)}}
$scope.displayArchived = function(archives){
    return (archives.length > 0) ? archives.join(',') : 'none';
};


然后,“让”帮助显示DeviceStatus的数量吗?

  let statuses = ['Old Device', 'New Device', 'Activated', 'Unactivated'];

最佳答案

在这种情况下,result.data.Devices是一个对象数组,看起来像这样:

[
   {DeviceId : "00022B9A000000010001" DeviceStatus : 3 .... },
   {DeviceId : "00022B9A000030011111" DeviceStatus : 9 ...},
   ....
]


因此,当您尝试获取result.data.Devices.DeviceStatus时,没有名为DeviceStatus的数组元素,这就是为什么要返回undefined的原因。

您将需要遍历设备数组以获得特定设备的DeviceStatus

angular.forEach(result.data.Devices, function(value, index){
           $scope.statuses.push(value.DeviceStatus);
         });


或者,如果知道所需设备,则可以直接访问:

var index = 1;
$scope.statuses = result.data.Devices[index].DeviceStatus;


编辑:

如果要获取所有设备并在模板中显示{{device.DeviceStatus}},请使用以下解决方案:

码:

$scope.devices = result.data.Devices;


模板:

<div ng-repeat="device in devices">
    {{ device.DeviceStatus }}
</div>


在我们的代码中,我们将request.data.Devices数组分配给$scope.devices。然后在模板中,我们使用ng-repeat浏览device中的每个$scope.devices并显示设备的DeviceStatus

编辑2:

为了使DeviceStatus与其实际名称匹配,您可以创建一个自定义过滤器。

在您的代码中创建过滤器:

app.filter('deviceStatus', function () {
  return function (status_id) {
      var statuses = ['Old Device', 'New Device', 'Activated', 'Unactivated'];
      return statuses[status_id];
  };
});


您现在可以在模板中使用新的过滤器:

<td>{{device.DeviceId | deviceStatus}}</td>


我们将DeviceId通过管道传递到自定义的deviceStatus过滤器中,以便在模板中获取正确的状态名称。

关于javascript - Angular将特定数据检索到$ scope变量中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39239540/

10-09 19:38