【发布时间】:2017-11-25 22:18:36
【问题描述】:
我正在构建一个 SPA,我正在使用 Angularjs 1.6 和 firebase(数据库和存储)。
我想在我的 html 页面上使用来自 firebase 存储的图像。
为了实现这一点
我正在使用一个指令,它在某些页面上运行良好,但如果我使用 ng-repeat 循环并动态粘贴链接到保存在
一个firebase存储,我偶然发现了一个问题。
我正在使用$getDownloadURL() 获得待处理的承诺,一段时间后它解决了,但页面已经加载并且我遇到了崩溃。
我可以更改$getDownloadURL()的承诺吗?
我的代码:
angular.module('module', ['firebase']).controller('someCtrl', someCtrl).directive('firebaseSrc', FirebaseStorageDirective);
function FirebaseStorageDirective($firebaseStorage, firebase) {
return {
restrict: 'A',
priority: 99,
link: function (scope, element, attrs) {
attrs.$observe('firebaseSrc', function (newFirebaseSrcVal) {
if (newFirebaseSrcVal !== '') {
var storageRef = firebase.storage().ref(newFirebaseSrcVal);
var storage = $firebaseStorage(storageRef);
storage.$getDownloadURL().then(function getDownloadURL(url) {
element[0].src = url;
});
}
});
}
};
}
FirebaseStorageDirective.$inject = ['$firebaseStorage', 'firebase'];
<ul>
<li ng-repeat="item in items">
<img firebase-src="{{item.somePath}}" />
</li>
</ul>
【问题讨论】:
-
我没有使用指令,但问题完全一样。你得到结果了吗?
标签: angularjs firebase angularjs-ng-repeat firebase-storage