2016-08-31 17 views
2

に動作していないに、私は単純に「働く」ことを、$スコープ変数に$ http.getからデータを設定しますが、私がする必要がある場合、私はその後、ここに

$scope.statuses = []; 

を初期化し、特定のデータを取得しますそれ以上フィルタリングしてください。オブジェクト $$ハッシュキー:

0デベロッパーツールのコンソール出力は、このようなデータの配列を返す

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

"オブジェクト:5" エイド: 「oAAABTUAAg == 「 DKiIndex : "DKi00000002" DefaultPayload : "C:\はProgramData \" DeviceI D : "00022B9A000000010001" DeviceStatus: 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リピートループにそれを作る前に、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」ヘルプを表示しますか?この場合

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は、次のようになりますオブジェクトの配列です:あなたがresult.data.Devices.DeviceStatusを取得しようとすると、

[ 
    {DeviceId : "00022B9A000000010001" DeviceStatus : 3 .... }, 
    {DeviceId : "00022B9A000030011111" DeviceStatus : 9 ...}, 
    .... 
] 

は、なぜあなたです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> 

、我々は$scope.devicesrequest.data.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> 

我々パイプ私たちのカスタムdeviceStatusフィルタにDeviceId得るためにテンプレート内の正しいステータス名。

+0

私はテンプレートを使用していますので、私はそれらのすべてが必要です... –

+0

私はDeviceStatus = 1ならDeviceStatus = "Activated"、DeviceStatus = 2ならDeviceStatus = "私はそれをどのように達成することができますか?事前に感謝します –

+0

@ JeremyMiller私はカスタムフィルタでデバイスのステータスコードを確認する方法に関する情報を追加しました。 – accraze

関連する問題