сделайте 3 суммы 3-х ионных диапазонов равными 100 - PullRequest
0 голосов
/ 29 мая 2020

У меня есть 3 ионных диапазона, которые пользователь может изменить (по умолчанию диапазон от 0 до 100. Я хотел бы создать динамический c интерфейс, чтобы, если пользователь перейдет из 3 ионных диапазонов ( или если он переместится 2), сумма трех ионных диапазонов всегда будет равна 100.

Я начал что-то вроде этого (на домашней странице): https://stackblitz.com/edit/ionic-pt7dzp

Это работает. На самом деле, если мы переместим 2 первых диапазона, третий диапазон будет равен 100 - (2 других значения), но это не очень хорошо. Например, второй диапазон должен иметь новые минимальное и максимальное значение в зависимости от значения выбрано в диапазоне 1 (если диапазон 1, если 40, тогда диапазон 2 должен быть от 0 до 60 и так один). Но это только если пользователь перемещает диапазон 1, если он начинает перемещать диапазон 3, ничего не происходит ...

Я мог бы bing min и max в зависимости от выбранного значения, но у меня их будет много, если, и это будет «не очень хорошо».

Как мне установить что-то, что я value1 + value2 + value3 = 100 и значение изменяется автоматически, когда я меняю (возможно, добавьте другие правила, например, если значение1 = 50; значение 2 = (100 - 50) / 2 и значение 3 то же самое ..).

Спасибо за помощь.

1 Ответ

0 голосов
/ 29 мая 2020

Вы на правильном пути. Каждый раз, когда изменяется одно из значений, вам необходимо соответственно изменить два других. В функции change в вашем stackblitz вы передаете имя значения, но фактически не используете его для соответствующей адаптации logi c.

Когда одно значение изменяется, два других должны будут измениться соответственно . Я бы сделал что-то вроде этого:

change (name: string) {
  if (name == 'value1') {
    const remainder = 100 - this.value1;
    this.value2 = Math.floor(remainder * this.value2 / (this.value2 + this.value3));
    this.value3 = remainder - this.value2;
  }
  // the same for value2 and value3 accordingly
}

Допустим, значение 1 было 10, значение 2 было 40, а значение 3 было 50. Если вы теперь измените значение 1 на 20, остаток 80 будет распределен между значением 2 и значением 3 в соотношении у них раньше было. Это приведет к: значение1 = 20, значение2 = 35, значение3 = 45

...