Путь к C ++ должен был бы использовать std :: stringstream или просто простые конкатенации строк. Строки C ++ являются изменяемыми, поэтому соображения производительности конкатенации менее опасны.
в отношении форматирования вы можете делать все то же форматирование в потоке, но по-другому, подобно cout
. или вы можете использовать строго типизированный функтор, который инкапсулирует это и предоставляет интерфейс String.Format, например. boost :: format
Вот моя попытка, см. Пример Codepen
. Я создал метод, который переключает добавление и удаление цвета в массиве. Затем я добавил функцию щелчка для самой строки с помощью @click.capture.stop="toggleColor(color)"
.
Часть .capture.stop
проверяет, нажал ли пользователь сначала на поле выбора, и если это так, останавливает повторный запуск метода. Иначе, когда вы щелкаете по полю выбора, поле выбора и строка переключают значение, тем самым удаляя друг друга
methods: {
toggleColor (color) {
if (this.selected.includes(color)) {
// Removing the color
this.selected.splice(this.selected.indexOf(color), 1);
} else {
// Adding the color
this.selected.push(color);
}
}
}
computed: {
selected: function() {
return this.colors.filter(color => color.selected)
}
}
Предоставляет вам каждый выбранный цвет в виде массива.
Это решение дает вам 2 преимущества перед вашим. Вы можете заранее определить, что следует проверять до того, как на него щелкнули один раз, и вы также можете легко реализовать манипулирование щелкающим значением массива вне самого флажка.