【问题标题】:Items from Firebase not displaying in Angular GridFirebase 中的项目未在 Angular Grid 中显示
【发布时间】:2016-12-13 00:33:47
【问题描述】:

从 Firebase 获取项目时,我在将项目显示在 this grid 中时遇到了一些困难。我设法让它与返回静态数组的自定义服务一起工作。

我知道数据正在到达浏览器,因为我可以像这样以 JSON 格式将其注销。

<pre>
{{ data | json }}
</pre>

HTML

<ul class="dynamic-grid" angular-grid="pics" grid-width="300" gutter-size="10" angular-grid-id="gallery" refresh-on-img-load="false" >
     <li data-ng-repeat="item in data" class="grid">
         <img src="{{item.url}}" class="grid-img" data-actual-width = "{{item.width}}"  data-actual-height="{{item.height}}" />
     </li>
 </ul>

但是,这些项目没有出现在视图中,或者我应该说它们在那里,但是 Angular-Grid 及其 CSS 不像静态数组那样工作。 这是代码的主要部分。

控制器

var list = iService.getItems().$loaded()
  .then(function(list) {
    var cnt = list.length;
    //console.log("cnt ", cnt);

    angular.forEach(list,function(image,index){
      //console.log('Item: ', list[index]);

      var imageTemp = new Image();
      imageTemp.onload = function(){
        list[index].height = this.height + 'px';
        list[index].width = this.height + 'px';

      };
      imageTemp.src = image.url;

      cnt--
      // test to see if all items have been iterated before setting $scope.data 
      if(!cnt){
        console.log("done....", cnt);
        console.log("ere ", list);
        $scope.data = list;
      } else {
        console.log("Current cnt ", cnt);
      }

    });

没有任何显示,尽管 JSON 仍然出现。顺便说一句,Angular-Grid 类 .grid-img 具有 opacity:0visibility:hidden,当在开发工具中停用时,它们会显示 Firebase 中的项目,但没有 Angular-Grid 调整大小/样式。

这可能不是实现它的最佳方式,但我正在试验并觉得来自 Firebase 而不是静态数组的数据应该不会有什么不同。有人知道这里可能出了什么问题吗?感谢所有帮助。谢谢!

【问题讨论】:

  • 为什么你创建 imageTemp 但不使用它还是我错过了什么?
  • @Searching Angular-Grid 和 Masonry 一样,需要每个图像的尺寸才能确定正确的布局。 Firebase 对象具有图像 URL,但事先不知道每个图像的尺寸。因此,我决定在将整个列表数组添加到$scope.list 之前,创建一个临时图像对象来获取和存储每个图像的尺寸,它是forEach 中的相应列表对象。同样,这可能不是最好的方法,但当我使用静态数组时它似乎工作正常。希望这是有道理的。

标签: javascript angularjs firebase firebase-realtime-database angular-grid


【解决方案1】:

documentation 中的示例在ul 属性中使用angular-grid="pics",在控制器中使用$scope.pics=...

angular-grid="pics" 定义你想听的模型

但你设置的是$scope.data。这有什么不同吗?

【讨论】:

  • 解决了!!我认为该属性是 Angular-Grid 的某种内部设置。呃!很好发现。非常感谢!
  • 没问题 :) 最难发现的总是小东西​​!
猜你喜欢
  • 1970-01-01
  • 2018-03-08
  • 1970-01-01
  • 1970-01-01
  • 2013-04-24
  • 1970-01-01
  • 2020-07-29
  • 2019-07-30
  • 2021-08-06
相关资源
最近更新 更多