[英]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.