2016-04-09 1 views
0

Ich habe Probleme beim Zugriff auf Daten in $scope aus meiner Sicht gespeichert. Hier ist das Setup:

Ich habe Bilddaten in data/images.json gespeichert.

{ 
    "sample-image": { 
    "url": "imgs/sample.jpg", 
    "description": "This is an image." 
    } 
} 

Es wird von einer $http Anfrage in einer Fabrik zugegriffen wird,

app.factory('getImageData', ['$http', function($http) { 
    var url = 'data/images.json'; 

    return $http.get(url) 
    .success(function(data) {return data;}) 
    .error(function(err) {return err;}); 
}]); 

, die von dem Controller

app.controller('ImageCtrl', ['$scope', 'getImageData', function($scope, getImageData) { 
    getImageData.then(function(data) { 
     $scope.images = data; 
    }, function(err) { 
     console.warn('Error loading image: ', err); 
    }); 
}]); 

In meiner Vorlage genannt würde ich im Idealfall haben möge so etwas wie <img src='{{ images.data.sample-image.url }} />, jedoch {{ images.data.sample-image.url }} wird 0.

Bitte beachten Sie die folgenden Vorlage-Ergebnis Combos:

<pre>{{ images.data }}</pre> kehrt

{"sample-image":{"url":"imgs/sample.jpg","description":"This is an image."}}
jedoch <pre>{{ images.data.sample-image }}</pre> und <pre>{{ images.data.sample-image }} beide Rück 0

ich die tieferen Ebenen der Daten zugreifen können, wenn ich eine Winkel Funktion wie ng-repeat:

<pre ng-repeat='image in images.data'>image.url</pre> kehrt

imgs/sample.jpg

Warum erhalte ich 0, wenn ich {{ images.data.sample-image.url }} rufe, wenn die Daten eindeutig dort und zugänglich sind?

+0

hilft Wie wird 'images.data' Objekt die angeforderte json zeigt? Wenn Sie '$ scope.images' als Wert für die von Ihrem Dienst zurückgegebenen' data' setzen, sollte '$ scope.images ['sample-image']. Url' nicht das sein, was Sie wollen? Wie erhalten die Daten, die Sie zurückgegeben haben, eine Dateneigenschaft? –

Antwort

0

Warum haben Sie einen Bindestrich? 'Beispielbild'

Sollten Sie keinen Unterstrich verwenden?

Wie: 'sample_image', weil js dies sehen und ot wie mathematische Gleichung bewerten wird.

Sie sollten mit String-Notation wie images.data versuchen [ „Probe-Bild“] statt Lassen Sie mich wissen, ob dies