2017-07-22 2 views
0

Ich habe fast meine Antwort hier gefunden (Multiple ng-repeat on single element), ich brauche nur ein wenig Hilfe.Mehrere ng-Wiederholung in der gleichen div

Ich versuche, mehrere Werte im selben div mit ng-Wiederholung anzuzeigen. Ich folgte dem, was im obigen Link beantwortet wurde, obwohl ich nicht weiß, was ich in den Gültigkeitsbereich setzen sollte. Bis jetzt wird nichts angezeigt.

Hier ist meine JS:

var app = angular.module('test', []); 

app.controller('MainCtrl', function($scope) { 
    var database = firebase.database(); 
    database.ref(`trips/${userid}/trips`).once('value') 


.then(photosSnap => { 
    var photosObj = photosSnap.val(); 
    var tripName = Object.keys(photosObj).map(key => photosObj[key].name); 
    var tripPhotoUrl = Object.keys(photosObj).map(key => photosObj[key].photourl); 

this.repeatData = tripName.map(function(value, index) { 
return { 
    data: value, 
    value: tripPhotoUrl[index] 
} 
}); 

    $scope.repeatData = data; 
    $scope.repeatData = value; 

    $scope.$apply(); 

    console.log($scope); 
}).catch(err => alert(err)); 

    }); 

Und mein HTML:

<div class="main" ng-app="test" ng-controller="MainCtrl"> 

    <div id="usertripinfo" ng-repeat="data in repeatData" style="background-image: url({{data.value}}); height: 300px; width: 600px;"> 

    {{data.data}} 

    </div> 

</div> 
+0

Sie können nicht verwenden style = "background-image: url ({{data.value}}); verwenden Sie stattdessen in der Ansicht ng-class und weisen Sie die Zuordnung nicht direkt $ scope zu – Vivz

Antwort

1

das Ergebnis $scope.repeatData Zuordnung macht es in der HTML-Datei als repeatData verfügbar, versuchen Sie dies:

var app = angular.module('test', []); 
 

 
    app.controller('MainCtrl', function ($scope) { 
 
    var database = firebase.database(); 
 
    database.ref(`trips/${userid}/trips`).once('value') 
 

 

 
     .then(photosSnap => { 
 
     var photosObj = photosSnap.val(); 
 
     var tripName = Object.keys(photosObj).map(key => photosObj[key].name); 
 
     var tripPhotoUrl = Object.keys(photosObj).map(key => photosObj[key].photourl); 
 

 
     $scope.repeatData = tripName.map(function (value, index) { 
 
      return { 
 
      data: value, 
 
      value: tripPhotoUrl[index] 
 
      } 
 
     }); 
 
     }).catch(err => alert(err)); 
 
    });

+0

Es funktionierte, danke! – marcvander

+0

Nur noch eine Frage, wie kann ich es ändern, um eine oder mehrere Variablen im gleichen Bereich hinzuzufügen? – marcvander

+0

fügen Sie einfach Ihren Variablennamen als Schlüssel in $ scope, zB '$ scope.myVariable = 5 'wird 'myVariable' im HTML mit einem Wert von 5 verfügbar machen. –

0
$scope.repeatData = data; 
    $scope.repeatData = value; 

Ich denke, indem Sie diese repeatData ist Überschreibung von Wert. Deshalb können Sie den Wert nicht richtig erhalten.

aber wenn Sie wollen beide Daten sowie Wert, als Sie in Objekt mit anderen Schlüssel zuweisen können.

Verwandte Themen