0

Чтобы дать краткое изложение того, что я работаю над:Ng-Повторять не обновляется до обновления страницы

Это приложение является телефонная книга, которая делает вызов нашей серверной системы и возвращает полезную нагрузку JSON, который затем анализироваться и сохраняется в локальном хранилище для автономного доступа, а затем данные отражаются в простом формате рабочего стола.

Чтобы дать простой рабочий процесс:

  1. журналы пользователей в
  2. вызова к серверным посредством запроса Ajax производится под учетной записью пользователя
  3. Данные хранятся в локальном хранилище
  4. Данные добавлен в $ rootScope.allEmployeeИнформация переменной
  5. Ion-List отражает данные, хранящиеся в переменной $ rootScope.allEmployeeInformation на главном экране.

Моя проблема заключается здесь:

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

Есть ли способ гарантировать, что эти фрагменты данных будут отображаться без необходимости обновления страницы?

Был бы более чем счастлив предоставить больше необходимой информации. Спасибо, что помогли ребятам!

Edit, обновление с некоторым кодом по запросу:

Code which performs the ajax request

Html, который отображает информацию:

<ion-view> 
<ion-content class="scroll-content has-header animated fadeIn" ng-controller="HomeScreenController" padding="true"> 
<ion-refresher 
pulling-text="Pull to resync...." 
on-refresh="resyncEmployees(true)"> 
</ion-refresher> 
<ion-list> 
<ion-item 
class="ion-item-content" 
ng-repeat="employee in allEmployeeInformation | orderBy:'lastName'" 
ng-controller="AccountCtrl" 
ng-click="changeTabb(1, {{employee.identifier}})"> 

<div class="item-icon-left"> 
<i class="icon ion-person"></i> 
<h3>{{employee.userCN}}</h3> 
<h5>{{employee.title}}</h5> 
<h6>{{employee.town}}</h6> 
</div> 

<div class="item-icon-right"> 
<i class="icon ion-chevron-right icon-accessory"></i> 
</div> 

</ion-item> 
</ion-list> 
</ion-content> 
</ion-view> 

Edit # 2: я считаю, я сузил вниз к infact является проблемой с ng-repeat, а не Ion-List, как я ожидал на первый взгляд. Обновление эталонных тегов.

Cheers! Mike

+0

Ваш запрос ajax сбрасывает данные в rootScope, но никогда не обновляет переменную 'allEmployeeInformation', которую использует' ng-repeat'. Здесь нет оснований привлекать сюда корневую область. –

ответ

4

Довольно легко - вы используете $.ajax jQuery, и это не вызывает цикл дайджеста. Циклы дайджеста - это то, что говорит «Угловое» обновление, а 2-х сторонное связывание существенно (заглушено). Используйте прилагаемый модуль Angular $http.

$http.get(agent).then(function(response) { 

}); 

Кроме того, вы вызываете location.reload() в конце кода - который будет избавиться от любого клиента изменения, которые вы сделали до сих пор. Вам, вероятно, это не нужно.

+0

Спасибо за ответ @tymeJV - посмотрим, исправляет ли я мою проблему и отчитывается о том, что другие переживают то же самое в будущем. Случайно забыл удалить это location.reload() на pasteBin ... хороший улов! Благодаря! –

+0

@MichaelAmato - Нет проблем - также, будущий совет - разместите свой код здесь, а не в pastebin - он получит большую аудиторию и последует за правилами размещения: D – tymeJV

+0

Спасибо @tymeJV! Сделаю для будущего ... любительскую ошибку, извините! Просто обновил код, чтобы использовать $ http.get, а не Ajax, и теперь кажется, что оболочка безопасности, чем моя команда, использует для доступа к нашему серверному агенту, вызывает проблемы. Мы аутентифицируем пользователей, а затем оболочка автоматически присоединяет любые файлы cookie, необходимые для аякс-запросов, для доступа к требуемому серверному агенту. Продолжит расследование. –

0

Не видя никакого кода, вы также можете попробовать установить cache: false в конфигурацию маршрутов. См. Пример ниже:

.state('dashboard', { 
    cache: false, 
    url: '/dashboard', 
    views: { 
    'menuContent' : { 
     templateUrl: 'templates/dashboard.html', 
     controller: 'DashboardController', 
    } 
    } 
}) 

Если у вас есть какой-либо код для публикации, я могу быть в состоянии помочь.

EDIT Зачем вам нужно использовать $rootscope? Вы также должны попробовать использовать $scope, потому что у вас всегда будет доступ к информации о сотруднике в localStorage, если вы хотите использовать его в другом представлении или контроллере.

+0

Спасибо за ответ @ user1237122! Я только что обновил свой пост с некоторыми из кода, чтобы узнать, можете ли вы предоставить более глубокое понимание. Кажется, он заставляет обновить после того, как запрос ajax полностью помещает код в бесконечный цикл обновления, поскольку запрос ajax должен выполняться каждый раз, когда приложение обновляется, чтобы обеспечить самую последнюю информацию о сотрудниках. Еще раз спасибо! –

+0

Только что понял, что я забыл также добавить, что кеш настроек к false в состоянии приводит к тому, что данные не отображаются даже после обновления, что позволяло отображать информацию ранее. –

+0

«Принуждение перезагрузки страницы» - страшная стратегия для приложений с угловыми углами - вся суть SPA заключается в том, что вам не нужно перезагружать страницу при обновлении данных. –