2015-11-09 4 views
1

У меня странная проблема с мобильным приложением, созданным с использованием Meteor + angular + ionic.ionic иногда не показывает элементы списка

На одной из вкладок я подписываюсь к коллекции под названием Contacts и отображения списка контактов в ionic списке:

<ion-list> 
    <ion-item ng-repeat="contact in contacts" type="item-text-wrap"> 
     <strong>{{contact.name}}</strong> 
    </ion-item> 
</ion-list> 

Вот что в контроллер для этой вкладки:

$scope.contacts = $meteor.collection(Contacts); 

И вот что у меня есть в настройке router:

... 
}).state('tab.contacts', { 
    url : '/contacts', 
    views : { 
     'tab-contacts': { 
      templateUrl: 'templates/contacts/list.ng.html', 
      controller : 'ContactsCtrl' 
     } 
    }, 
    resolve: { 
     contacts: ['$meteor', function ($meteor) { 
      return $meteor.subscribe('contacts'); 
     }] 
    } 
}) 

Проблема в том, что почти 8 раз из 10, когда я открываю приложение, отображаются элементы html списка, но name и любые другие контактные данные пустые, как на прилагаемом рисунке. Это просто элемент списка, но сам контакт не определен:

empty list of contacts

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

Если я обновляю страницу своего приложения, используя инспектор chrome usb, он отображает правильно. Что мне не хватает?

ответ

0

Попробуйте это:

resolve: { 
    "contacts": ['$meteor', function ($meteor) { 
     $meteor.subscribe('contacts').then(function(subscriptionHandle){ 
      return $meteor.collection(Contacts); 
     }) 
    }] 
} 

И вам не нужно это в контроллере Теперь $scope.contacts = $meteor.collection(Contacts); Контроллер должен выглядеть следующим образом: app.controller("myCtrl", function($scope, contacts) { code... }

$ scope.contacts будет коллекция вернулась так ,

Надеюсь, что он работает.

+0

'$ scope.contacts' не определено, если я удалю это из своего контроллера. –

+0

Контакты: под разрешением должно быть «контакты»:/Я сделал редактирование. Также ваш контроллер должен выглядеть так: «myCtrl», функция ($ scope, contacts) { ... код } – nikitz

+0

Работает ли он сейчас? – nikitz