我在这里初始化
$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/