2016-08-16 13 views
0

から特定のデータをつかむには、APIが返すものの絵ですこの配列。また、「現在の承認者」がローカルストレージに保存されているユーザー名と一致し、「ステータス」が「拒否された」場合、jqueryの行を実行します。ここでAngularJS JSON配列ここ

は私が持っているものである:ここでは

$http.get(API + '/car'). 
success(function(data) { 
    $scope.myCars = data; 
    console.log(data); 

    var originator = $scope.myCars["My CARs"]["Current Approver"], 
     status = $scope.myCars["My CARs"].Status, 
     user = localStorage.getItem('user') || null 

    // Check if logged in user is originator and CAR is "REJECTED" 
    if (originator === user && status === 'REJECTED') { 
    $('#termCar').css('display', 'block'); 
    } 

}); 

はHTMLです:

<div ng-repeat="car in myCars['My CARs']" class="myCar"> 
    <div class="carId">{{ car['Display Name'] }}</div> 
    <div class="title">{{ car['Project Title'] }}</div> 
    <div id="termCar" class="termCar"><a ui-sref="taskDetails">Terminate</a></div> 
</div> 

私はそれがこれらの行(明らかに)とは何かを持っていることを知っている:

originator = $scope.myCars["My CARs"]["Current Approver"], 
status = $scope.myCars["My CARs"].Status 

私は配列から特定のデータを引き出す方法を理解できません。

オブジェクトの配列をループして、そのif文を満たしているものを見つけて、それらのうちの1つがjQuery行を実行しているかどうかを調べる必要があります。

ありがとうございました。

答えて

0

試してみてください。

originator = $scope.myCars["My CARs"][0]["Current Approver"]; 
status = $scope.myCars["My CARs"][0].Status 

あなたは単にあなたがから値を取得したい配列内のどのインデックスを参照していません。問題はこれです

0

そうだね、:仕事にそのために

$scope.myCars["My CARs"]["Current Approver"] 

、あなたのデータ構造は次のようになりなければならないでしょう:

"My CARS": { 
    "Current Approver": "..." 
} 

My CARsは、オブジェクトの配列です、その配列を反復処理する必要があります。あなたは通常これを基本的なforEachで行います。 Lodashを行うのは、これが素敵になりますが、私はネイティブのJSを使用します:

var user = localStorage.getItem('user'); 
$http.get('/car').success(function(data) { 
    var cars = data['My CARs']; 
    cars.forEach(function(car) { 
    if (car["Current Approver"] === user && car.Status === 'REJECTED') { 
     // do stuff 
    } 
    }); 
}); 
0

あなたは

$http.get(API + '/car').success(function(data) { 
    $scope.myCars = data; 
    console.log(data); 
    var user = localStorage.getItem('user') || null; 
    var originator = $scope.myCars["My CARs"].filter(function(d) { 
     return d["Current Approver"] === user && d["Status"] === 'REJECTED' 
    }); 

    if (originator.length) { 
     $('#termCar').css('display', 'block'); 
    } 
}); 
0

はこのお試しくださいローカルユーザーと一致するように配列My CARsフィルタリングする必要があります。

var cars = $scope.myCars["My CARs"]; 
for(int i = 0; i < cars.length; i++) { 
    var theCar = cars[i]; 
    if(theCar["Current Approver"] === user && theCar["Status"] === "REJECTED") { 
     originator = theCar["Current Approver"]; 
     status = theCar.Status; 
     break; 
    } 
} 

Current Approveruserと一致する最初のかごのステータスを表示します。