Я работаю над мобильным приложением HTML5, используя AngularJs. Производительность в Windows на телефоне и Android, но на iOS она создает проблемы с производительностью на некоторых устройствах.
Проблема в том, что при переключении с одного вида на другой контроллер не загружается вовремя, и, следовательно, переменные $ scope не инициализируются. Я использую эти переменные в привязке в представлениях, поэтому элемент, который должен быть скрыт, виден.
Это происходит с элементами, которые зависят от моделей и манипуляций внутри контроллера. Это создает проблемы с производительностью.
Edited Imp thing: Это происходит не в первый раз, когда загружается представление. Когда я вернусь к другому взгляду и вернусь, он начнет происходить (т.е. Никаких манипуляций с контроллером. Никакие переменные не инициализируются)
Это немного общий вопрос. Но в основном вы можете сделать две вещи.
Разрешите данные на маршрутах, чтобы убедиться, что данные доступны до запуска контроллера.
Обведите переменные области видимости в таймаут, чтобы убедиться, что dom отображается.
Предположим, вы используете
<div ng-show="isSomeFlag"></div>
<div ng-hide="isSomeFlag"></div>
Внутри вашего контроллера вы используете
$scope.isSomeFlag= true;
Добавьте следующее:
<div ng-show="isLoading && isSomeFlag"></div>
<div ng-hide="isLoading && isSomeFlag"></div>
А в контроллере на последней строке установите для параметра isLoading значение true.
$scope.isSomeFlag = true;
...
$scope.isLoading = true; // controller ends here (below)
Таким образом, элементы будут вести себя так, как ожидалось. Однако есть много других способов, например, для разрешения и т.д., Но это должно решить проблему обновления интерфейса пользователя.
resolve
маршрутизации для предварительной загрузки данных. Нужно больше подробностей