Переменные области видимости AngularJs $ запаздывают при загрузке контроллера

0

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

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

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

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

  • 0
    Можете поделиться кодом?
  • 0
    можно использовать resolve маршрутизации для предварительной загрузки данных. Нужно больше подробностей
Показать ещё 1 комментарий
Теги:
cordova

2 ответа

0

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

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

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

  • 0
    Дом был обработан, но внутри контроллера ничего не манипулировали. Вид виден без каких-либо манипуляций. Скажем, $ scope.ddlShow - это переменная, используемая для отображения выпадающего списка. Выпадающий список виден как есть, а $ scope.ddlShow даже не инициализирован. Чертова вещь: это не происходит в первый раз при загрузке представления. Когда я возвращаюсь к другой точке зрения и возвращаюсь, это начинает происходить
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>

А в контроллере на последней строке установите для параметра isLoading значение true.

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню