私はAngularファクトリに少し問題があります。それは正確にデータを返す しかし、私はそれをログにしようとすると、クロムコンソールでは、それは最初は空であり、クロムは私のオブジェクトの横にメッセージを表示します - object value at left was snapshotted when logged
。私のオブジェクトを展開すると、すべてがそこにあります。返されたデータをループすると、定義されていないエラーが発生します。角度のあるファクトリからデータを返すと、オブジェクトが返された後にデータが設定されます。
私はこれが約束されていると確信していますが、どうすればいいか分かりません。私はちょうど私のコントローラでこの工場から返されたデータをループスルーしたいと思っています。私のコードは以下の通りです。
angular.module('myMap').factory('mapSorter', function($http) {
x2js = new X2JS(),
data = {
styles: [],
layers: []
};
return {
//pass in array of objects with url property
processMapData : function(kmls) {
//loop through each object
angular.forEach(kmls, function(kml) {
$http.get(kml.url).then(function(response) {
//push properties from response into data object
data.styles = data.styles.concat(x2js.xml_str2json(response.data).kml.Document.Style)
data.layers.push(x2js.xml_str2json(response.data).kml.Document.Placemark)
})
})
return(data);
}
}
});
ありがとうございます!
あなたのデータはどこですか? $ http.getリクエストは非同期なので、データを返す前にデータが到着するのを待ってから、コンソールに出力してください。 –
応答をありがとう。私はコントローラでこれをやっています: 'mapData = mapSorter.processMapData($ scope.kmlLayers); console.log(mapData) ' ここで($ scope.kmlLayers)は、私がprocessMapData関数に渡しているオブジェクトです。 –
私は、工場から返される前か、コントローラからオブジェクトが受け取られた後に、すべてのデータがいつ返されるかを把握する方法が必要だと思います。 –