以下是API返回的图片:
我正在尝试创建能够抓住"当前审批人"和"状态"从这个数组。如果"当前审批人"匹配存储在本地存储中的用户名和"状态"是"被拒绝"然后我想运行一行jquery。
这就是我所拥有的:
$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语句的对象,然后如果其中一个对象运行jQuery行。
感谢您的帮助。
答案 0 :(得分:0)
尝试:
originator = $scope.myCars["My CARs"][0]["Current Approver"];
status = $scope.myCars["My CARs"][0].Status
您根本没有引用要从中获取值的数组中的哪个索引。
答案 1 :(得分: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
}
});
});
答案 2 :(得分:0)
您需要过滤数组My CARs
以匹配本地用户
$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');
}
});
答案 3 :(得分:0)
试试这个:
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 Approver
与user
匹配的第一辆汽车的状态。