0

I'm using ngInfiniteScroll in a few different places to show contacts, and missed calls. It loops over every item and adds a ng-click to show user profile. The scrolling works fine in all locations until you actually click on a user/call. Afterwards the scroll never triggers again in either contacts nor phone calls. I've looked at their docs and seen infinite-scroll-listen-for-event which I figured is what I needed for infinite scroll to reset after the click event, but it doesn't appear to be working. I can't tell if I have the $emit in the wrong location, or what?

HTML

            <md-list infinite-scroll="recent.moreContacts()" infinite-scroll-disabled="recent.busy" infinite-scroll-listen-for-event="resetInfiniteScrollList" infinite-scroll-distance="1" infinite-scroll-immediate-check="false" infinite-scroll-parent="true">
            <md-list-item ng-repeat="client in recent.clients | orderBy:'firstName'" ng-click="recent.viewCustomer(client.id)" class="repeater-list-item recent-session" layout="row" layout-align="start start" aria-label="View {{client.fullName}}'s profile">
                <div ng-if="client.avatar" class="md-avatar" style="background-image: url('{{client.avatar}}');"></div>
                <div ng-if="!client.avatar" class="md-avatar" ></div>
                <div class="md-list-item-text">
                    <h3>{{client.firstName}} {{client.lastName}} <span ng-if="!client.firstName">Unknown <small class="text-tertiary text-gray">(Customer: {{client.id}})</small></span></h3>
                </div>
            </md-list-item>
        </md-list>

loading contacts

                vm.moreContacts = function () {
                $timeout(function () {
                    $rootScope.closeSidenavs();
                    $rootScope.btnActive = 'contacts';
                    $mdSidenav('contacts').open();
                    $sessionStorage.currentTab = 'contacts';
                    if (vm.busy || vm.foundAllContacts || vm.contactsSearchActive) {

                    } else {
                        vm.busy = true;
                        api.get('/account/' + $rootScope.user.account.id + '/clients?page=' + vm.contactsNextPage, function (success, data) {
                            if (success) {
                                for (var i = 0; i < data.clients.length; i++) {
                                    vm.clients.push(data.clients[i]);
                                }

                                self.totalFound = data.totalFound;

                                self.lastPageLoaded = data.page;

                                if (data.clients.length === 25) {
                                    vm.contactsNextPage = vm.contactsNextPage += 1;
                                    console.log(vm.contactsNextPage);
                                }

                                if (vm.clients.length === self.totalFound) {
                                    vm.foundAllContacts = true;
                                }
                            } else {
                                vm.isClientsError = true;
                            }
                            vm.busy = false;
                        });
                    }
                }, 10);
            };

ng-click function

            vm.viewCustomer = function (clientId) {
            if (clientId > 0) {
                if ($mdMedia('xs') || $mdMedia('sm')) {
                    $rootScope.btnActive = '';
                    $rootScope.closeSidenavs();
                }

                $location.path(
                    "/customer/" + clientId + "/feed"
                );

                $rootScope.$emit('resetInfiniteScrollList');


                //vm.contactsSearchActive = false;
            }
        };
Thomas Horner
  • 233
  • 1
  • 2
  • 10
  • What does `resetInfiniteScrollList` do? – Pop-A-Stash May 18 '17 at 19:55
  • According to their docs, it's for triggering the scroll event manually. Add infinite-scroll-listen-for-event after your infinite-scroll in the markup then call $scope.$emit('resetInfiniteScrollList') in the controller – Thomas Horner May 18 '17 at 20:18

0 Answers0