Cara Meneruskan Nilai Dropdown ke dom-repeat

Saya mencoba meneruskan nilai ke templat dom-repeat, tetapi perilakunya default ke item pertama dalam array. Saya mencoba mengatur string dari array string.

Komponen Induk

<select value="[[entry.method]]"
  on-change="_changeMethod">
  <template is="dom-repeat" items="[[entry.methods]]">
    <option value="[[item]]">[[item]]</option>
  </template>
</select>

Komponen Turunan

this.dispatchEvent(new CustomEvent('add-item', {
  bubbles: true,
  composed: true,
  detail: {
    method: 'b',
    methods: ['a', 'b', 'c']
  }));

Drop-down defaultnya adalah 'a'

Bagaimana saya bisa memasukkan 'b' untuk menetapkan nilai drop down awal?


person Matthew    schedule 19.02.2018    source sumber


Jawaban (1)


Dengan asumsi method adalah pilihan yang diinginkan dari methods, Anda dapat memodifikasi pengendali acara untuk acara add-item untuk memilih indeks yang sesuai. Caranya adalah menunggu render frame selanjutnya (menggunakan Polymer.RenderStatus.afterNextRender()< /a>), yang mana DOM telah diperbarui dengan entri baru.

addItem(e) {
  const entry = e.detail;
  const selectedIndex = entry.methods.indexOf(entry.method);
  this.entry = entry;

  Polymer.RenderStatus.afterNextRender(this, () => {
    this.$.mySelect.selectedIndex = selectedIndex;
  });
}

demo

person tony19    schedule 20.02.2018