Я пытаюсь разобраться с различным поведением ngModel в разных браузерах.
Моя директива обертывает jqueryUI autocomplete и в событии select она вызывает ngModel.$setViewValue(selectedItem.id). Autocomplete позволяет пользователю выбирать элемент с помощью мыши или нажатием enter на клавиатуре.
Если предложенный пункт:
{
"name": "Apple",
"id": "1000"
}
Я ожидаю, что после его выбора значением ngModel будет выбран элемент id - 1000.
-
В Chrome он работает нормально - он правильно устанавливает
$viewValueи$modelValue($modelValue=1000). -
В Firefox он устанавливает модель как в Chrome (
$modelValue=1000), но когда я нажимаю где-то еще - размываю (тогда браузер, вероятно, запускает событиеchange), модель изменяется и становится такой же, как видимое входное значение ($modelValue='Apple'). -
В IE 11 он устанавливает правильную модель только тогда, когда я выбираю элемент с щелчком мыши. Если я выберу его, нажав
enter, модель станет видимым входным значением ($modelValue='Apple')
Вот plunkr: http://plnkr.co/edit/o2Jkgprf8EakGqnpu22Y?p=preview
Я хотел бы достичь такого же поведения в каждом браузере. Как бороться с этими проблемами?