Polymer 2.5.0 - дом-повтор не обновляется - PullRequest
0 голосов
/ 29 августа 2018

Я искал SO для решения своей проблемы, я наткнулся на этот пост и этот другой пост , но он не решил мою проблему.

Я хочу добавить <li> к <ul> динамически, но когда я использую методы мутации массива, это не работает (я могу правильно регистрировать обновления массива).

Я пытался использовать массив JSON вместо простой строки, и я пытался сделать this.notifyPath('peoples');, но, тем не менее, не работает

static get properties() {
    return {
        peoples: {
            type: Array,
            value: []
        }
    }
}
_test2() {
    console.log(this.peoples);

}
_test() {
    this.push('peoples', 'test');
}
<div class="flex__item--top list">
    <ul id="namelist">
        <template is="dom-repeat" items={{peoples}}>
            <li>{{item}}</li>
        </template>
    </ul>
</div>

1 Ответ

0 голосов
/ 29 августа 2018

Вы можете принудительно выполнить рендеринг dom-repeat, вызвав метод render.

render (): недействительно

Заставляет элемент отображать его содержимое. Обычно рендеринг асинхронный к провоцирующему изменению. Это сделано для эффективности, так что несколько изменений вызывают только один рендер. Метод рендеринга должен вызываться, если, например, рендеринг шаблона требуется для проверить состояние приложения.

так что если ваш dom-repeat такой

<template id="list" is="dom-repeat" items={{peoples}}>
            <li>{{item}}</li>
</template>

Вы можете принудительно сделать рендеринг из вашего компонента, как это

_test() {
    this.push('peoples', 'test');
    this.$.list.render();
}
...