如何在firebase存储中绑定angularjs中的图像

时间:2016-07-11 17:12:21

标签: angularjs firebase firebase-storage

如何在Firebase存储参考的angularjs视图中显示图像? 我可以在控制台中打印网址,但无法在视图中访问。

服务代码

function getImageUrl(image) {
        var url;
        var pathReference = firebaseDataService.images.child(image);
        return pathReference.getDownloadURL().then(function(url) {
           return url;                
        }).catch(function(error) {
            // Handle any errors
        });         
    }

控制器代码

$scope.getImageUrl = function(image) {
var imageUrl;
    var imageUrl = Service.getImageUrl(image).then(function(url) {  
          imageUrl = url;
          console.log(url);
          return imageUrl;
    });
   return imageUrl;
}

查看

 <div ng-repeat="category in categories">
  <img src="{{getImageUrl(category.image)}}">
 </div>

2 个答案:

答案 0 :(得分:1)

在src属性中使用{{hash}}之类的Angular标记并不能正常工作:浏览器将使用文字文本{{hash}}从URL中获取,直到Angular替换{{hash}中的表达式}。 ngSrc指令解决了这个问题。

<img ng-src="{{getImageUrl(category.image)}}">

答案 1 :(得分:0)

当您检索类别时,您可以遍历类别并检索每个图像,将其存储在不同的范围对象中并在视图中使用它。

$scope.images = {};

categoriesSnapshot.forEach(function(category){
    Service.getImageUrl(category.val().image).then(function(url) {  
          $scope.images[category.key] = url;
    }); 
});

在您的HTML中:

<div ng-repeat="(key, val) in categories">
    <img src="{{images[key]}}">
</div>