Я разрабатываю приложение "художественная галерея".
Не стесняйтесь вытаскивать источник на github и поиграть с ним.
Plunker с полным исходным кодом
Текущая работа для того, чтобы заставить масонство играть хорошо с Angular:
.directive("masonry", function($parse) {
return {
restrict: 'AC',
link: function (scope, elem, attrs) {
elem.masonry({ itemSelector: '.masonry-brick'});
}
};
})
.directive('masonryBrick', function ($compile) {
return {
restrict: 'AC',
link: function (scope, elem, attrs) {
scope.$watch('$index',function(v){
elem.imagesLoaded(function () {
elem.parents('.masonry').masonry('reload');
});
});
}
};
});
Это не работает, потому что:
- По мере того, как контент растет, также накладные расходы на перезагрузку во всем контейнере.
Функция reload
:
- Не добавляет элементы "append", а перенастраивает каждый элемент в контейнере.
- Работает ли для запуска перезагрузки, когда элементы отфильтровываются из набора результатов.
В контексте приложения, которое я привел выше, эта проблема очень легко реплицируется.
Я ищу решение, которое будет использовать директивы для использования:
.masonry('appended', elem)
и .masonry('prepended', elem)
Вместо выполнения .masonry('reload')
каждый раз.
.masonry('reload')
, когда элементы удаляются из набора результатов.
ИЗМЕНИТЬ
Проект был обновлен для использования рабочего решения ниже.
Возьмите источник на GitHub
См. рабочую версию на Plunker