angularjs
  • angularjs-directive
  • jquery-masonry
  • masonry
  • 2014-12-17 1 views 1 likes 
    1

    Я испытываю некоторое интересное поведение с угловой кладкой. Я загрузить его, как указано в их документации:угловая кладка, отображающая кирпичи в одном столбце после обновления результатов ngRepeat

    <input type="text" ng-model="searchString" ng-keyup="search()" /> 
    <div masonry='{"gutter" : 25}'> 
        <div class="masonry-brick" ng-repeat="result in results"> 
         <div>{{result.description}}</div> 
        </div> 
    </div> 
    

    загружаю $ scope.results от вызова API при загрузке страницы и все выглядит отлично ... Кладка делает все кирпичи рядный, как можно было бы ожидать. После обновления $ scope.results из набора результатов API элементы отображаются в одном столбце слева от страницы. Стиль все еще выглядит великолепно, но я не могу использовать полную ширину страницы. Я в основном идут от:

    ---- ---- ---- 
    ---- ---- ---- 
    

    к:

    ---- 
    ---- 
    ---- 
    ---- 
    ---- 
    ---- 
    

    Есть ли способ сказать кладку пересчитывать сетку? или кто-нибудь еще нашел хороший способ решить эту проблему? Я прочитал несколько вопросов, а также посмотрел проект github, но я не могу найти подходящее решение.

    ответ

    0

    Я не уверен, если это лучшее решение, но это работает для меня в подобной ситуации:

    function refresh() { 
        common.$timeout(function() { $scope.$broadcast('masonry.reload'); }, 100); 
    } 
    

    Вызов refresh() всякий раз, когда источник данных изменяется/обновляется. Это заставит кладовую пересчитать макет.

    +0

    Подробнее о моей связанной проблеме здесь: http://stackoverflow.com/questions/27967781/how-to-fix-overlapping-bricks-with-angular-masonry –

    0

    Вызов

    $('.grid').masonry('destroy'); 
    

    как раз перед устанавливают новые данные для повторной модели. это помогло мне.

     Смежные вопросы

    • Нет связанных вопросов^_^