Обновление модели ввода из Ng-Paste перезаписывается действием вставки
Наши инструменты: AngularJS 1.5.11 w/ Angular Material v?
Идея
Мы пытаемся позволить пользователю вставить одну строку или столбец данных (в нашем случае - целые числа), которые они скопировали из таблицы Excel или Google, в один столбец входных данных в нашей таблице данных. Если они вставляются во вход, мы хотим заполнить этот вход и входы под ним соответствующими значениями из вставленных данных.
По сути, это было бы похоже на копирование столбца / строки из таблицы Excel и вставку их в один из столбцов нашей таблицы данных, как можно было бы ожидать, чтобы скопированные данные вставлялись в любую другую таблицу.
Эта проблема
Когда пользователь выполняет вставку, мы смогли извлечь и проанализировать вставленные данные через объект события JQLite $ и поместили эти значения данных в массив, связанный с контроллером нашего шаблона. Затем мы перебираем строки, чьи входы должны изменяться, и присваиваем новые значения правильному свойству 'ng-model' для ввода этой строки. Проблема в том, что кажется, что функция ng-paste выполняется до того, как вставленные данные привязываются к исходной модели ввода, поэтому, когда мы изменяем эту первую модель в нашем цикле, она перезаписывается (или что-то в этом роде). По сути, первоначальный ввод содержит вставленные данные вместо значения, которое мы записали в модель.
шлепнуть
Здесь: https://embed.plnkr.co/Vt2jDiF7pVmrbYpuoz0E/ TO TEST: Любой набор значений, разделенных пробелами, запятыми, новыми строками, возвратами каретки или вкладками, должен работать с нашим кодом. Скопируйте эту строку:5.3245,6234.3443,95.2453,10.2594
и вставьте его в один из входов, чтобы увидеть, как он ломается.
1 ответ
Решение:
https://plnkr.co/edit/KjA1gnQj6JYbxFswLQjd?p=preview
ev.preventDefault()
return;
Приведенный выше фрагмент предотвращает фактическое действие вставки.