Функция после дом-повтора закончена - PullRequest
0 голосов
/ 25 июня 2019

Я создал новый компонент в Polymer 2, внутри которого я буду использовать 2 веб-компонента, компонент a для отображения имени div и длины компонентов b, которые будут запускать dom-repeat внутри этого веб-компонента.С учетом сказанного, после завершения dom-repeat мой код не работает так, как я хочу.Мне нужно получить длину компонентов b после того, как dom-repeat run закончил, чтобы: - Получить длину и вставить мой счетчик в компонент a - Разделить все компоненты b на группы по 6 в одном div

Я сделал некоторый код JQueryв скрипте, и поместит опускание ниже, это работало с div по умолчанию, но когда я вставил метод ready, мой полимерный элемент возвращает 0, не дожидаясь окончания dom-repeat.Я попробовал setTimeout, но это тоже не сработало.

console.log('Init count');
var content = $('component-b').length;
console.log('Cards: ' + content);
var item = $('component-b');
for (var i = 0; i < item.length; i+=6){
  item.slice(i, i+6).wrapAll('<div class="list"></div>');
}
var lists = $('.list').length;
console.log('Lists: ' + lists);
$('component-a').attr({
  total:content
});
$('component-a').attr({
  totalPages:lists
});

Здесь я расскажу, как это работает сейчас.У компонента a есть свойства для отображения счетчика.

<template>
      <div class="secao">
          <h2>{{title}}</h2>
          <component-a>
            <template is="dom-repeat" items="{{products}}" as="product">
              <component-b class="product" product-id="{{product.productID}}" image-src="{{product.imageSrc}}" href="{{product.href}}"
          main-title="{{product.mainTitle}}" authors-text="{{product.author}}" price-discount-value="{{product.priceDiscount}}"
          price-value="{{product.realPrice}}" avaliation-score="{{product.avaliationScore}}" flag="{{product.flag}}"></component-b>
            </template>
          </component-a>
        </div>
      </template>

Это результат, показанный в Firefox.Количество инициаций Карты: 0 Списки: 0

Но у моего массива 24 карты, и с этим кодом jquery будет 4 списка

...