在这种情况下,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;
EDIT:
如果您想获取所有设备并使用模板显示 {{ device.DeviceStatus }},这里有一个解决方案:
Code:
$scope.devices = result.data.Devices;
模板:
<div ng-repeat="device in devices">
{{ device.DeviceStatus }}
</div>
在我们的代码中,我们分配request.data.Devices
数组到$scope.devices
。然后在模板中,我们使用ng-repeat
去经历每一个device
in $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
过滤器以便在模板中获取正确的状态名称。