我已经创建了一些从REST API中获取数据的服务。这些服务返回带有名称,ID和一些与foo
或bar
名称相关的唯一键的对象。我也有一项服务为企业做同样的事情,也有名称,ID,以及foo
/ bar
与该业务相关联的服务。
不幸的是,这个数据模型......并不理想。不是仅显示哪个foo
/ bar
附加到该商家,而是每个商家都有foo
或bar
published: true/false
个/ { val pair。
我尝试做的是获取URL名称,遍历我的foo
对象,检查当前URL中的名称和数据是否匹配,以及是否存储该对象在$scope.results
。从这里开始,我想遍历我的业务对象并检查其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();
});
答案 0 :(得分:0)
您正在使用的两个http调用也可能存在问题,因为它们彼此依赖。如果第一次调用需要一些时间,第二次http调用首先返回。
答案 1 :(得分:0)
我发现自己大部分时间都使用SO作为橡皮鸭,我基本上在输入问题时就把它弄清楚了。这是由于published: true/false
键/值对。
我所要做的就是改变
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]);
}
}