簡體   English   中英

滿足條件后將對象推送到空數組

[英]Push object to empty array after condition is met

我創建了一些服務,這些服務從REST API抓取數據。 這些服務返回帶有名稱,ID和一些與foobar名稱有關的唯一鍵的對象。 我也有一項針對企業的服務,也提供名稱,ID以及與該企業相關的foo / bar

不幸的是,用於此的數據模型不理想。 而不是僅僅示出了foo / bar附加到企業,它擁有每一個foobar與一對每一單業務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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM