2016-04-22 4 views
0

i zwei Arrays, die sowohl mit einem Rahmen verbunden sind (http get usw.):Zwei Gegenstände Arrays und concat

$scope.allShops 

, dass der Shop alle Details halten und

$scope.allCds 

, die alle halten die cds

beide funktionieren gut und die Ng-Repeat gibt mir alle die Ausgabe (individuell), die ich brauche, ich möchte jedoch eine Suche erstellen, die ich auf dem Namen der CD und auf dem Shop-Namen aus dem gleichen suchen kann Suchfeld (usi ein Etikett zu erwähnen, wenn es ein Geschäft oder eine CD ist, um Verwirrung zu vermeiden). So kam ich mit auf den Punkt:

$scope.allShops = []; 
$scope.allCds = []; 

var jointData1 = ''; 
var jointData2 = ''; 
var SearchAll = ''; 

    var jointData1 = $scope.allShops; 
    console.info(jointData1); 

    var jointData2 = $scope.allCds; 
    console.info(jointData2); 

    var searchAll = jointData1.concat(jointData2); 
    console.info(searchAll) 

Aber alle Protokolle sind leer, wenn ich das Protokoll innerhalb des succes.array Funktion legen Sie es zeigt mir das Datenobjekt, sondern setzen Sie das Protokoll mit dem Bereich außerhalb geben Sie mir nichts. Wie bekomme ich die Daten außerhalb der Array-Funktion und in der Lage, die beiden Bereiche zu erfassen?

Antwort

1

Ihre console.info Anrufe leer sein wird, weil die $ HTTP-Dienst die Daten zurück noch nicht erhalten hat.

Sie müssten dies tun, nachdem die Daten unter Verwendung eines Versprechen (.then())

+0

gibt es keine Möglichkeit, sie zu aktualisieren, wenn es die Daten empfängt? Könnte ich das vielleicht als Beispiel tun? "Ich lade zuerst die Shops und zeige sie unter dem SearchAll an, dann lade ich die CD's und füge sie zur SearchAll hinzu" cds enthält viele Zeilen, so dass ich auch etwas Zeit zum Laden brauche. –

+0

habe es zur Arbeit gebracht, danke Carlos –

0

Probieren Sie diese

function merge_options(obj1,obj2){ 
     var obj3 = {}; 
     for (var attrname1 in obj1) { 
      obj3[attrname1] = obj1[attrname1]; 
     } 
     for (var attrname2 in obj2) { obj3[attrname2] = obj2[attrname2]; } 
     return obj3; 
    } 
merge_options(obj1,obj2); 
+0

wie kann ich dies implementieren zurückgegeben wird, was ist der attrnameX? –

+0

übergeben Sie einfach Ihre 2 Objekte an diese Funktion und die Funktion wird das zusammengeführte Objekt zurückgeben – byteC0de

+0

attrname1 ist Schlüsselname des Objekts – byteC0de