Как перенести варианты из одного выбора в другой в aurelia? - PullRequest
0 голосов
/ 27 февраля 2019

Я пытаюсь переместить выбранные опции в select1 для выбора2 на click кнопки.Это мой 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(), чтобы при нажатии на кнопкупереместить выбранные элементы в другой список?

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Вы можете просмотреть 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>
0 голосов
/ 27 февраля 2019

Я добавил кнопку add в соответствии с вашим вариантом использования.Пожалуйста, обратитесь по ссылке ниже, и я обновил решение.Я думаю, вы ищете что-то похожее.

Образец StackBlitz

Если вам нужна дополнительная помощь, пожалуйста, прокомментируйте это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...