моя предпосылка была неверной. хотя AngularJS, безусловно, замедлял работу, это было не из-за проблемы, которую я описываю ниже. однако именно ответ flim на мой вопрос — как исключить элемент из области видимости Angular — смог доказать это.
Я создаю сайт, который генерирует графики, используя d3 + Raphael из данных, полученных с помощью AJAX. это приводит к МНОЖЕСТВУ элементов SVG или VML в DOM, в зависимости от того, какой тип диаграммы пользователь выбирает для отображения (например, у круговой диаграммы мало, у линий и полос много).
Я столкнулся с проблемой, когда ввод текста в текстовые поля, контролируемые AngularJS, приводит к сканированию Firefox. Я набираю несколько символов, затем жду 2-3 секунды, пока они внезапно не появятся, затем набираю еще несколько и т. д. (Кажется, Chrome справляется с этим немного лучше).
когда на странице нет графика (пользователь не предоставил достаточно данных для его создания), можно отредактировать содержимое этих текстовых полей. Я предполагаю, что у AngularJS возникают проблемы, когда он пытается обновить DOM, и ему приходится просматривать сотни элементов SVG или VML.
граф, однако, не содержит ничего, о чем AngularJS должен беспокоиться. (однако есть элементы пользовательского интерфейса как до, так и после графика, на которые ДЕЙСТВИТЕЛЬНО нужно обращать внимание.)
Я могу придумать два решения:
поместите DIV графика вне контроллера AngularJS и используйте CSS, чтобы расположить его там, где он действительно нужен
скажите AngularJS - как-то - не обращать внимания на DIV графика; чтобы пропустить его при сохранении представления и модели в синхронизации
второй вариант кажется мне предпочтительнее, так как он сохраняет макет документа разумным / семантическим. Есть какой-либо способ сделать это? (или какое-то, даже лучшее решение, о котором я не подумал?)