3-х инпутов в строке, нужно показывать кнопку save
при нажатии - отправлять запрос на сервер.
Вопрос - как я могу узнать изменились ли инпуты или нет?
3 input - это один компонент. показывается через v-for
<input @input="edited = true" /> <button :disabled="!edited">Save</button> . . . data() { return { edited: false, }; },
гениально просто, спасибо
Обычно на такие мелочи забивают болт, но. Можно заморочиться. В mounted забирать строки из всех инпутов, сохранять их хэш, а после изменения генерить новый и сравнивать.
В смысле?
Хэш-функция необратима и не позволяет восстанавливать исходный массив информации из символьной строки
let str = 'before'; const hashBefore = hash(str); str = 'after'; if (hash(str) !== hashBefore) alert('Data changed');
Только в том случае, если брать второй текст и хэшировать его, только так сравнивать сравнивать, как ты и написал в принципе Но хэш нельзя будет вернуть в исходное состояние, если не используешь какой-то алгоритм
А я в исходном сообщении предлагал что?
Так и предлагал)
Но то что ты написал все равно немного неверно будет работать
Мы сравниваем хэши двух текстов, до и после изменения. Если текст после изменения вернуть в исходное состояние, то их хэши совпадут.
Возможно да, а возможно нет) Ситуаций много и все не предугадаешь
Что вы несёте, уважаемый? Хэши идентичных текстов идентичны. Тут не бывает "может быть"
зачем вам хэши от примитивов вообще?
Ваш пароль на сервере хранится в виде хэша и сравнивается с хэшем введённого пароля. Точно также
Чтобы не сравнивать несколько инпутов, а сравнить только лишь общий факт изменения какого-либо поля
А нельзя использовать компютед свойства?
Можно, но это механизм который сравнивает, а мы спорим на тему алгоритма)
Ну у вас готовое из под коробки есть, зачем что то новое изобретать и споритт
Тю. Что вас тут смущает? computed: { dataChanged() { return this.hashBefore !== this.hash(this.getAllInputTexts()); }, },
да ничего вроде
computed:{ edited: initHash !== hash(data) }
Обсуждают сегодня