我正在嘗試開發一個具有圖像輪播(來自Materialize框架)的網頁,該網頁顯示從Firebase中獲取的來自網址的一系列圖片。爲了說明不同數量的圖像,我使用了Angular.js。現在我該節的HTML代碼如下所示:從Firebase + Angular.js在旋轉木馬中展示來自網址的圖片?
<div ng-app="myApp">
<div ng-controller="GalleryController as galleryImages">
<div class="carousel carousel-slider grey" data-indicators="true">
<div ng-repeat="image in galleryImages.images">
<a class="carousel-item"><img ng-src="{{image}}"></a>
</div>
</div>
</div>
</div>
而且我的JavaScript看起來像這樣:
var app = angular.module('myApp', []);
app.controller('GalleryController', ['$scope', function($scope) {
var galleryImages = this;
getData(function(data) {
galleryImages.images = data["gallery"];
$scope.$apply();
});
}]);
function getData(completion) {
var database = firebase.database();
var ref = database.ref('nodes/myNode');
ref.once('value', function(snapshot) {
completion(snapshot.val());
});
}
哪裏data["gallery"]
是圖像的URL的數組。需要注意的是,如果我在var galleryImages = this
之後插入像galleryImages.images = ["some image url here"]
這樣的行,那麼它實際上會顯示該圖像。但是如果我在getData
內部放置相同的行,那麼它不起作用。
我錯過了什麼?
編輯:嘗試使用AngularFire。沒有成功。這是我的新代碼:
<div ng-app="myApp">
<div ng-controller="GalleryController">
<div class="carousel carousel-slider grey" data-indicators="true">
<div ng-repeat="image in object.gallery">
<a class="carousel-item" href="#one"><img ng-src="{{image}}"></a>
</div>
</div>
</div>
</div>
而且在年底的Javascript:
var app = angular.module('myApp', ['firebase']);
app.controller('GalleryController', ['$scope', '$firebaseObject', function($scope, $firebaseObject) {
var data = $firebaseObject(firebase.database().ref('nodes/myNode'));
data.$loaded().then(function() {
$scope.data = data;
var object = {};
angular.forEach($scope.data, function(value, key) { object[key] = value; });
$scope.object = object;
});
}]);
打印出來object
表明它實際上確實有關鍵gallery
值,它是URL的數組。但圖像仍然沒有顯示在旋轉木馬上。
顯示'getData'函數 –
用getData代碼更新了問題。 – Technicolor
你可以使用'var galleryImages = this.images;'。這看起來像一個範圍問題 – Milk