[英]Push object to empty array after condition is met
我创建了一些服务,这些服务从REST API抓取数据。 这些服务返回带有名称,ID和一些与foo
或bar
名称有关的唯一键的对象。 我也有一项针对企业的服务,也提供名称,ID以及与该企业相关的foo
/ bar
。
不幸的是,用于此的数据模型不理想。 而不是仅仅示出了foo
/ bar
附加到企业,它拥有每一个foo
或bar
与一对每一单业务published: true/false
键/值对。
我想做的是获取URL名称,遍历我的foo
对象,检查当前URL中的名称和数据是否匹配,以及是否确实将该对象存储在$scope.results
。 在这里,我想遍历我的business对象,并检查其conditionData
id是否与新的$scope.results
数组的id相匹配。 满足此条件后,我要将这些业务存储在$scope.businesses
数组中。 就目前情况而言,我得到的是所有公司的退货,而不仅仅是与当前$scope.results
id相同的id的那些。 我怀疑问题是a)我是菜鸟(最有可能)或b)已published: true/false
在造成问题。
在此先感谢您的帮助,如果需要其他说明,请告诉我。 我仍然对Angular和JS整体还很陌生,所以我不确定我尝试这样做的方式是否超级理想。 如果有人的话,我愿意提出更好的主意。
.controller('ResultsController', function($scope, $location, getData) {
$scope.businesses = [];
$scope.results = [];
var url = $location.path().split('/')[2]; // we do this because it's always going to follow a pattern of /:base/:name
function init() {
getData.getConditions().success(function(data) {
var tempCondition = data;
var tempData;
for (var condition in tempCondition) {
tempData = tempCondition[condition];
if (url === tempData.name) {
$scope.results = tempData;
}
}
})
.error(function(data, status, headers, config) {
console.log('err: ' + data);
});
getData.getBusinesses().success(function(data) {
var tempBusinesses = data,
tempConditionData;
for (var business in tempBusinesses) {
tempConditionData = tempBusinesses[business].conditionData;
for (var condition in tempConditionData) {
if (tempConditionData[condition].id === $scope.results.id) {
$scope.businesses.push(tempBusinesses[business]);
}
}
}
})
.error(function(data, status, headers, config) {
console.log('err: ' + data);
});
}
init();
});
您正在使用的两个http调用也可能会出现问题,因为它们彼此依赖。 如果第一个调用需要一些时间,您的第二个http调用将首先返回。
我发现自己大部分时间都将SO用作橡皮鸭,一旦输入完问题,我就基本知道了。 这是由于published: true/false
key / val对。
我要做的就是改变
for (var condition in tempConditionData) {
if (tempConditionData[condition].id === $scope.results.id) {
$scope.businesses.push(tempBusinesses[business]);
}
}
至
for (var condition in tempConditionData) {
if (tempConditionData[condition].id === $scope.results.id && tempConditionData[condition].published === true ) {
$scope.businesses.push(tempBusinesses[business]);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.