как использовать нумерацию страниц bootstrap ui с компонентом angularjs 1.6

Я хотел бы сделать нумерацию страниц, как в этой ссылке -repeat">Как использовать UI Bootstrap Pagination для таблицы, сгенерированной с помощью ng-repeat

Я прочитал документы здесь https://angular-ui.github.io/bootstrap/#!#getting_started ng-model="pageNumber", но я не знаю, что подразумевается под "к этому параметру применен прослушиватель angular $watch", например, ng-model имеет $ смотреть слушателя.

Я использую компоненты. Что означает прослушиватель $watch и как использовать $watch внутри компонента. Это вообще возможно или есть другой способ? ознакомьтесь со всем кодом в моем плункере. https://plnkr.co/edit/E2dKJx2PB1BXsE9hFkte?p=preview

список-бронирования.html

<ul 
uib-pagination
ng-model="$ctrl.currentPage" 
items-per-page="$ctrl.itemsPerPage" 
total-items="$ctrl.bookings.length" 
max-size="$ctrl.maxSize">
</ul>
<table>
     ...
    <tr ng-repeat="booking in $ctrl.bookings">
      ...
    </tr>
  </tbody>
</table>

что я должен сделать, чтобы это сработало?

  app.component('bookingList', {
    templateUrl: 'booking-list.html',
    controller: ['BookingSvc', function(BookingSvc) {
      let self = this;

      self.bookings = BookingSvc.query();

      self.maxSize = 2;
      self.currentPage = 1;
      self.itemsPerPage = 2;

      // what should I do to make this work?
      /*$scope.$watch("currentPage", function() {
        setPagingData(self.currentPage);
      });

      function setPagingData(page) {
        let pagedData = self.bookings.slice(
          (page - 1) * self.itemsPerPage,
          page * self.itemsPerPage
        );
        self.pagedBookings = pagedData;
      }*/

    }]
  });

person S.Anaconda    schedule 12.08.2017    source источник


Ответы (1)


Используйте крючок $doCheck жизненного цикла

В версии 1.5.8 AngularJS добавил хук жизненного цикла $doCheck в сервис $compile.

Из документов:

Контроллер может предоставлять следующие методы, которые действуют как ловушки жизненного цикла:

  • $doCheck() — вызывается на каждом ходу цикла дайджеста. Предоставляет возможность обнаруживать изменения и реагировать на них. Любые действия, которые вы хотите предпринять в ответ на обнаруженные вами изменения, должны быть вызваны из этого хука; реализация этого не влияет на вызов $onChanges. Например, этот хук может быть полезен, если вы хотите выполнить глубокую проверку на равенство или проверить объект Date, изменения которого не будут обнаружены детектором изменений Angular и, следовательно, не вызовут $onChanges. Этот хук вызывается без аргументов; при обнаружении изменений необходимо сохранить предыдущие значения для сравнения с текущими значениями.

--Справочник по API всеобъемлющей директивы AngularJS -- Крючки жизненного цикла

person georgeawg    schedule 12.08.2017