2016-08-31 2 views
2

инициализирует здесь

$scope.statuses = []; 

Тогда, если я просто установить данные от $ http.get переменных $ области видимости, что «работает», но мне нужно отфильтруйте его больше.

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

Это возвращает массив данных, как это в Dev вывода инструментов консоли

0: Объект $$ hashKey : "объект: 5" Aid : «oAAABTUAAg == " DKiIndex : "DKi00000002" DefaultPayload : "C: \ ProgramData \" DeviceI д : "00022B9A000000010001" DeviceStatus : ManifestIdList : Массив [3] PendingManifestId : нуль PendingTimeStamp : "0001-01-01T00: 00: 00" Ша : " R2tiZRQgY/iohXZt5O4HaQwtVe/adWU2VOcKaelJ3Us =» StagedManifestIdList : Array [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> 
... 

По существу Я хотел бы манипулировать данными в JavaScript/угловых (.js), прежде чем он делает это в нг-повтор цикла

Таким образом, $ 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']; 
+1

У вас есть «массив», вы должны указать позицию (индекс), которую хотите получить «DeviceStatus». Ex. Если вы хотите получить первый DeviceStatus: '$ scope.statuses = result.data.Devices [0] .DeviceStatus;'. – developer033

+0

{{device.DeviceStatus}} был в моем html, поэтому я хочу записать каждое значение в ng-repeat, я хочу немного манипулировать им функцией –

+0

Покажите свой HTML-код – developer033

ответ

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; 

EDIT :

Если вы хотите приобрести все устройства и отобразить {{device.DeviceStatus}} с помощью y наш шаблон, вот решение:

Код:

$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 фильтр для того, чтобы получить правильное имя статуса в шаблоне.

+0

Я использую шаблон, поэтому мне нужно все это ... –

+0

Я добавил еще код, мне нужно увидеть, если DeviceStatus = 1, а затем DeviceStatus = «Активирован» else, если DeviceStatus = 2, затем DeviceStatus = Unactived "и т. Д. Как я могу это достичь? Заранее спасибо –

+0

@JeremyMiller Я добавил информацию о том, как проверить код состояния устройства с помощью настраиваемого фильтра. – accraze

Смежные вопросы