使用ng-repeat结果应用过滤器

时间:2019-08-30 13:00:11

标签: angularjs

根据先前的get请求的ID过滤结果时出现问题:

$http.get('https://www.immobiliaremartina.it/inc/show_all.php')
    .success(function (data) {$scope.results = data;})
    .error(function () {alert("Errore di connessione!")})

$http.get('https://www.immobiliaremartina.it/inc/showFoto.php')
    .success(function (data) {$scope.fotos = data;})
    .error(function () {alert("Errore di connessione!")})

在这两次通话之后,我想根据fotos的ID显示results中的所有图片

<div class="slider gal" >
    <ul class="slides" >
        <li ng-repeat="foto in fotos | filter: result.ID === foto.ID">
            <img src="/public/galleria/{{foto.URL}}">
        </li>
    </ul>
</div>

这怎么可能?

2 个答案:

答案 0 :(得分:2)

您可以尝试以下

js

$scope.data = [];

var fotos = $http.get('https://www.immobiliaremartina.it/inc/showFoto.php')
var results = $http.get('https://www.immobiliaremartina.it/inc/show_all.php')

$q.all([fotos, results]).then(data => {
    var fotoResult = data[0];
    var resultResult = data[1];

    for(i= 0; i< fotoResult.length;i++){
        for(j = 0; j < resultResult.length;j++){
            if(fotoResult[i].ID === resultResult[j].ID){
                $scope.data.push(fotoResult[i]);
            }
        }
    }
});

html

<div class="slider gal" >
    <ul class="slides" >
        <li ng-repeat="foto in data> 
            <img src="/public/galleria/{{foto.URL}}">
        </li>
    </ul>
</div>

上面的代码等待两个http请求的结果,并在它们加载后过滤控制器中的数据,并在html中显示过滤后的数据。

答案 1 :(得分:0)

创建函数:

$scope.isInResults = function(foto){
  return results.filter((result) => result.id === foto.id)
};

然后

<li ng-repeat="foto in fotos | filter: isInResults">
    <img src="/public/galleria/{{foto.URL}}">
</li>
相关问题