Javascript 将特定数据检索到$scope变量不起作用
我在这里初始化Javascript 将特定数据检索到$scope变量不起作用,javascript,angularjs,json,angularjs-scope,Javascript,Angularjs,Json,Angularjs Scope,我在这里初始化 $scope.statuses = []; 然后,如果我简单地将数据从$http.get设置为$scope变量,那么这“起作用”,但我需要进一步过滤它 $scope.statuses = result.data.Devices; console.log($scope.statuses); 在dev工具控制台输出中返回如下数据数组 0:对象 $$hashKey : “对象:5” 帮助 : “oAAABTUAAg==” DKiIndex : “DKi00000002” 默认有
$scope.statuses = [];
然后,如果我简单地将数据从$http.get设置为$scope变量,那么这“起作用”,但我需要进一步过滤它
$scope.statuses = result.data.Devices;
console.log($scope.statuses);
在dev工具控制台输出中返回如下数据数组
0:对象
$$hashKey
:
“对象:5”
帮助
:
“oAAABTUAAg==”
DKiIndex
:
“DKi00000002”
默认有效载荷
:
“C:\ProgramData\”
设备ID
:
“00022B9A0000000010001”
设备状态
:
3.
表现主义者
:
数组[3]
悬而未决
:
无效的
等待时间戳
:
“0001-01-01T00:00:00”
沙
:
“R2tiZRQgY/iohXZt5O4HaQwtVe/adWU2VOcKaelJ3Us=”
舞台游手好闲者
:
数组[0]
然而,我只想要一些具体的数据
$scope.statuses = result.data.Devices.DeviceStatus;
为什么会说“未定义”,我该怎么做
所以0:Object 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>
...
那么“let”对设备状态的数量有帮助吗
let statuses = ['Old Device', 'New Device', 'Activated', 'Unactivated'];
在本例中,
result.data.Devices
是一个如下所示的对象数组:
[
{DeviceId : "00022B9A000000010001" DeviceStatus : 3 .... },
{DeviceId : "00022B9A000030011111" DeviceStatus : 9 ...},
....
]
因此,当您尝试获取result.data.Devices.DeviceStatus
时,没有名为DeviceStatus
的数组元素,这就是为什么返回未定义的
您需要遍历设备数组以获取特定设备的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}},请使用以下解决方案:
代码:
模板:
<div ng-repeat="device in devices">
{{ device.DeviceStatus }}
</div>
您现在可以在模板中使用新过滤器:
<td>{{device.DeviceId | deviceStatus}}</td>
{{device.DeviceId | deviceStatus}
为了在模板中获得正确的状态名称,我们将DeviceId
导入我们的自定义deviceStatus
过滤器。如果有数组
,则必须指定要获取deviceStatus
的位置(索引)。例如,如果要获取第一个DeviceStatus:$scope.status=result.data.Devices[0]。DeviceStatus代码>{{device.DeviceStatus}}在我的html中,所以我想捕获ng repeat中的每个值,我确实想使用函数show your html对其进行一点操作,然后是,非常抱歉-现在编辑问题。非常感谢itI添加了更多代码,我需要查看DeviceStatus=1然后DeviceStatus=“已激活”或者如果DeviceStatus=2然后DeviceStatus=“未激活”等等。。我怎样才能做到这一点?谢谢你advance@JeremyMiller我添加了有关如何使用自定义过滤器检查设备状态代码的信息。app
未定义,也未定义。我发布了一个新问题,这一次我有一个Plunker,它可以帮助您了解我是如何设置应用程序的。我在看视频和学习。。。。我感谢你的帮助
<div ng-repeat="device in devices">
{{ device.DeviceStatus }}
</div>
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>