如何在 aurelia 中将选项从一个 select 移动到另一个?
How to move options from one select to another in aurelia?
我正在尝试将 select1 中的 selected options 移动到按钮 click
上的 select2。这是我的 HTML 代码:
<p>
<select id="select1" size="10" style="width: 25%" multiple>
<option value="purple">Purple</option>
<option value="black">Black</option>
<option value="orange">Orange</option>
<option value="pink">Pink</option>
<option value="grey">Grey</option>
</select>
</p>
<button type="button" click.delegate="trig()">Add</button>
<p>
<select id="select2" size="10" style="width: 25%" multiple>
<option value="white">White</option>
<option value="red">Red</option>
<option value="yellow">Yellow</option>
<option value="blue">Blue</option>
<option value="green">Green</option>
</select>
</p>
这是我的包含按钮的 JS 代码
export class App {
constructor() {
}
trig() {
}
}
我必须在 trig()
中输入什么才能在单击按钮时将所选项目移动到另一个列表?
我已根据您的用例添加了 add
按钮。
请参考下面link,我已经更新了解决方案。我猜你正在寻找一些相同的东西。
如果您需要更多帮助,请对此发表评论。
您可以遍历 selectedColors1
并获取每个选定项目的 index
。然后将它们推入 color2
数组并从 colors
数组中将它们一一移除。
演示:CodeSandbox
export class App {
colors1 = [
{ id: "purple", name: "Purple" },
{ id: "black", name: "Black" },
{ id: "orange", name: "Orange" }
];
colors2 = [
{ id: "white", name: "White" },
{ id: "red", name: "Red" },
{ id: "blue", name: "Blue" }
];
selectedColors1 = [];
selectedColors2 = [];
add() {
this.selectedColors1.forEach(selected => {
// get the index of selected item
const index = this.colors1.findIndex(c => c.id === selected);
this.colors2.push(this.colors1[index]); // add the object to colors2
this.colors1.splice(index, 1); // remove from colors1
});
}
}
HTML:
<select multiple value.bind="selectedColors1">
<option repeat.for="color of colors1" model.bind="color.id">
${color.name}
</option>
</select>
<button type="button" click.delegate="add()">Add</button> <br />
<select multiple value.bind="selectedColors2">
<option repeat.for="color of colors2" model.bind="color.id">
${color.name}
</option>
</select>
我正在尝试将 select1 中的 selected options 移动到按钮 click
上的 select2。这是我的 HTML 代码:
<p>
<select id="select1" size="10" style="width: 25%" multiple>
<option value="purple">Purple</option>
<option value="black">Black</option>
<option value="orange">Orange</option>
<option value="pink">Pink</option>
<option value="grey">Grey</option>
</select>
</p>
<button type="button" click.delegate="trig()">Add</button>
<p>
<select id="select2" size="10" style="width: 25%" multiple>
<option value="white">White</option>
<option value="red">Red</option>
<option value="yellow">Yellow</option>
<option value="blue">Blue</option>
<option value="green">Green</option>
</select>
</p>
这是我的包含按钮的 JS 代码
export class App {
constructor() {
}
trig() {
}
}
我必须在 trig()
中输入什么才能在单击按钮时将所选项目移动到另一个列表?
我已根据您的用例添加了 add
按钮。
请参考下面link,我已经更新了解决方案。我猜你正在寻找一些相同的东西。
如果您需要更多帮助,请对此发表评论。
您可以遍历 selectedColors1
并获取每个选定项目的 index
。然后将它们推入 color2
数组并从 colors
数组中将它们一一移除。
演示:CodeSandbox
export class App {
colors1 = [
{ id: "purple", name: "Purple" },
{ id: "black", name: "Black" },
{ id: "orange", name: "Orange" }
];
colors2 = [
{ id: "white", name: "White" },
{ id: "red", name: "Red" },
{ id: "blue", name: "Blue" }
];
selectedColors1 = [];
selectedColors2 = [];
add() {
this.selectedColors1.forEach(selected => {
// get the index of selected item
const index = this.colors1.findIndex(c => c.id === selected);
this.colors2.push(this.colors1[index]); // add the object to colors2
this.colors1.splice(index, 1); // remove from colors1
});
}
}
HTML:
<select multiple value.bind="selectedColors1">
<option repeat.for="color of colors1" model.bind="color.id">
${color.name}
</option>
</select>
<button type="button" click.delegate="add()">Add</button> <br />
<select multiple value.bind="selectedColors2">
<option repeat.for="color of colors2" model.bind="color.id">
${color.name}
</option>
</select>