javascript - 如何用 Angular + Masonry 修复重叠的砖 block ?

标签 javascript jquery angularjs

我正在使用 passy's angular-masonry directives在我的应用程序中呈现平铺元素。与许多砌体示例不同,我的积木不包含图像,仅包含静态文本和通过自定义指令呈现的布局内容。我的设置如下:

<div data-masonry
     data-column-width="250"
     data-load-images="false"
     data-preserve-order
     data-reload-on-show
     data-masonry-options="{ gutter: 15, isFitWidth: true, transitionDuration: 0 }">

     <div class="masonry-brick"
          data-ng-repeat="event in vm.events | orderBy: 'startTime.toDate()' | filter: (vm.showOnlyRegistered && { going: true })">

          <div data-event-item="event"></div>

     </div>
</div>

data-event-item 是我的指令,它呈现如下内容:

<div class="panel panel-default panel-thin light-shadow bgcolor-override event-item-card">
<div class="panel-body" data-ng-class="{'bg-success': event.going}">
    <div>
        <p class="text-medium text-thin">{{event.name}}</p>
    </div>

    <p>
        <strong>{{event.computed.locationName}}</strong><br />
        <span data-ng-if="!event.virtual">{{event.city}}, {{event.state}} {{event.zipCode}}</span>
    </p>
    <span class="center-block">
        <span data-discover-pill data-type="default">
            <span class="text-thin">{{event.computed.registrationLabel}}</span>
        </span>
    </span>

    <button type="button" 
            class="btn push-to-bottom bottom-center"
            data-ng-class="{'btn-default': !event.going, 'btn-success': event.going}"
            data-ng-click="toggleGoing(event.id)">
        I'm Going <i class="fa fa-check"></i>
    </button>
</div>

在我的 CSS 中,我为进入积木的元素定义了 widthheight,因此(加上我明确设置 masonry column-width) 应该让砌体知道我所有的砖 block 有多大。

一切正常,除了有时(随机?)在页面加载时,所有积木都呈现为在左侧边缘一大堆堆叠在一起,就好像布局例程没有触发一样。如果手动调整窗口大小,一切都会恢复正常并保持原样。这似乎是其他一些人遇到的问题:https://github.com/passy/angular-masonry/issues/82

我已经尝试了 preserve-orderload-images="false" 等所有组合。我想我需要手动触发重新加载/重新布局,但据我所知,使用 passy 指令,你不能 directly call砌体方法。

最佳答案

我一直在使用 Passy 的指令时遇到问题。可能是因为我加载的积木数量或我的样式,但我不断收到很多零星的重叠,延迟重新加载积木等等。

我切换到 klederson 的 angular-masonry-directive并且对这个决定非常满意。我没有进行基准测试来确认,但它似乎加快了加载时间。

angular-masonry-directive

A very simple and 100% compatible masonry directive for AngularJS ... do you know how to use masonry? Good! You know how to use this.

This directive is meant for the raw masonry lib and not the jQuery one.

关于javascript - 如何用 Angular + Masonry 修复重叠的砖 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27967781/

相关文章:

javascript - 请推荐一种或多种最佳图表组件,Flash或javascript

javascript - 使用 ng-if 有条件地显示一个元素

javascript - 使用 jQuery 在主 div 中重新排列 div

javascript - jQuery循环.each()JSON键/值不起作用

javascript - angularfire 无法读取属性 facebook - 我如何在整个应用程序中继续使用 authData

angularjs - 如何使用基于另一个元素类的 AngularJS ng-Class 条件?

javascript - axios GET 结果为 "No ' Access-Control-Allow-Origin' header 出现在请求的资源上。”

javascript - jQuery/Mapbox 多个数据过滤器问题

javascript - 如何将 ng-option 模型设置为对象的值?

javascript - 如何将计数器存储在外部文件中并将其加载到 jquery 中?