我在这里初始化
$scope.statuses = [];
然后,如果我只是将数据从$ http.get设置为$ scope变量,那么“有效”,但我需要将其过滤掉。
$scope.statuses = result.data.Devices;
console.log($scope.statuses);
在dev工具控制台输出
中返回这样的数据数组0:对象 $$ hashKey : “对象:5” 援助 : “oAAABTUAAg ==” DKiIndex : “DKi00000002” DefaultPayload : “C:\ ProgramData \” 设备编号 : “00022B9A000000010001” DeviceStatus : 3 ManifestIdList : 阵列[3] PendingManifestId : 空值 PendingTimeStamp : “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>
...
基本上我希望在它进入ng-repeat循环之前操纵Javascript / angular(.js)中的数据
因此甚至可以使用$ scope甚至是适当的东西?
我知道我要更改一些数据,例如
字段中的某些数据被[]包围,例如[01,02,03]这样做 {{device.aid.join(',')}}会“修复”[]问题,但我需要有这样的功能吗?我在哪里可以使用它?
// usage {{displayArchived(item.archives)}}
$scope.displayArchived = function(archives){
return (archives.length > 0) ? archives.join(',') : 'none';
};
那么“let”会帮助设置DeviceStatus吗?
let statuses = ['Old Device', 'New Device', 'Activated', 'Unactivated'];
答案 0 :(得分:1)
在这种情况下,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
。
<强> EDIT2:强>
为了将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
过滤器中,以便在模板中获取正确的状态名称。