如何将下拉值传递给 dom-repeat
How to Pass in Dropdown Value to dom-repeat
我试图将一个值传递给 dom-repeat
模板,但行为默认为数组中的第一项。我正在尝试从字符串数组中设置一个字符串。
父组件
<select value="[[entry.method]]"
on-change="_changeMethod">
<template is="dom-repeat" items="[[entry.methods]]">
<option value="[[item]]">[[item]]</option>
</template>
</select>
子组件
this.dispatchEvent(new CustomEvent('add-item', {
bubbles: true,
composed: true,
detail: {
method: 'b',
methods: ['a', 'b', 'c']
}));
下拉列表默认为 'a'
如何传入'b'
来设置初始下拉值?
假设 method
是来自 methods
的所需 selection,您可以将 add-item
事件的事件处理程序修改为 select 相应的索引.诀窍是等待下一个渲染帧(使用 Polymer.RenderStatus.afterNextRender()
),此时 DOM 已更新为新条目。
addItem(e) {
const entry = e.detail;
const selectedIndex = entry.methods.indexOf(entry.method);
this.entry = entry;
Polymer.RenderStatus.afterNextRender(this, () => {
this.$.mySelect.selectedIndex = selectedIndex;
});
}
我试图将一个值传递给 dom-repeat
模板,但行为默认为数组中的第一项。我正在尝试从字符串数组中设置一个字符串。
父组件
<select value="[[entry.method]]"
on-change="_changeMethod">
<template is="dom-repeat" items="[[entry.methods]]">
<option value="[[item]]">[[item]]</option>
</template>
</select>
子组件
this.dispatchEvent(new CustomEvent('add-item', {
bubbles: true,
composed: true,
detail: {
method: 'b',
methods: ['a', 'b', 'c']
}));
下拉列表默认为 'a'
如何传入'b'
来设置初始下拉值?
假设 method
是来自 methods
的所需 selection,您可以将 add-item
事件的事件处理程序修改为 select 相应的索引.诀窍是等待下一个渲染帧(使用 Polymer.RenderStatus.afterNextRender()
),此时 DOM 已更新为新条目。
addItem(e) {
const entry = e.detail;
const selectedIndex = entry.methods.indexOf(entry.method);
this.entry = entry;
Polymer.RenderStatus.afterNextRender(this, () => {
this.$.mySelect.selectedIndex = selectedIndex;
});
}