2015-10-05 5 views
0

Я работаю над мобильным приложением HTML5 с помощью AngularJs. Производительность в Windows на телефоне и Android, но на iOS она создает проблемы с производительностью на некоторых устройствах.

Проблема в том, что при переключении с одного вида на другой контроллер не загружается вовремя и, следовательно, переменные переменной $ не инициализируются. Я использую эти переменные в привязке в представлениях, поэтому элемент, который должен быть скрыт, виден.

Это происходит с элементами, которые зависят от моделей и манипуляций внутри контроллера. Это создает проблемы с производительностью.

Отредактировано Imp вещь: Это происходит не в первый раз, когда вид загружается. Когда я вернусь к другому виду и вернусь, он начнет происходить (т. Е. Никаких манипуляций с контроллером. Никакие переменные не инициализируются)

+0

Вы можете поделиться некоторыми кодами? – MegaAppBear

+0

может использовать маршрутизацию 'resolve' для предварительной загрузки данных. Нужна более подробная информация – charlietfl

+0

Ну, здесь нет предупреждений, но когда я применяю оповещение в конце функции $ scope.init(), предупреждение появляется 10 раз по одному. Также, как я редактировал в Q выше, это не происходит в первый раз при загрузке вида. Это происходит потом. –

ответ

0

Это немного общий вопрос. Но в основном вы можете сделать две вещи.

  1. Уточните данные на маршрутах, чтобы убедиться, что данные доступны до запуска контроллера.

  2. Оберните переменные области видимости в таймаут, чтобы удостовериться, что dom визуализирован.

+0

Дом был визуализирован, но внутри контроллера ничего не было. Вид виден как без каких-либо манипуляций. Скажите $ scope.ddlShow - это переменная, используемая для отображения выпадающего списка. Выпадающий список отображается как есть, а $ scope.ddlShow даже не инициализирован. Imp вещь: Это происходит не в первый раз, когда вид загружается. Когда я возвращаюсь к другому взгляду и возвращаюсь, он начинает происходить –

0

Предположим, что вы используете

<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> 

И в контроллере на последний line установите флаг isLoading в значение true.

$scope.isSomeFlag = true; 
... 
$scope.isLoading = true; // controller ends here (below) 

Таким образом, элементы будут вести себя так, как ожидалось. Однако есть много других способов, например, для разрешения и т. Д., Но это должно решить проблему обновления интерфейса пользователя.

Смежные вопросы