Директива Angular JS Refresh Pager

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

Как это возможно?

(function () {
'use strict';

angular
    .module('App.widgets')
    .directive('customPager', customPager);

function customPager() {
    var pager = {
        scope: {
            pageIndex: '=',
            pageSize: '=',
            recordCount: '=',
            pageClick: '&onPageClick'
        },
        replace: true,
        restrict: 'E',
        templateUrl: 'custom-pager.html',
        link: link
    }

    return pager;

    function link(scope) {
        ....
    }
}})();

person zhuber    schedule 13.12.2015    source источник
comment
вы используете службу для получения ваших данных?   -  person Jorg    schedule 13.12.2015
comment
правильно, получить данные от контроллера, вызывающего службу   -  person zhuber    schedule 13.12.2015


Ответы (2)


Я надеюсь, что это поможет вам ;)

<!DOCTYPE html>
<html ng-app="testApp">
<head>
    <title>My ParseApp site</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <script src="/Scripts/angular.js"></script>
</head>
<body>

    <refresh></refresh>

    <script>
        angular.module("testApp", [])
            .directive("refresh", function () {
                return {
                    restrict: "E",
                    template: "<button ng-click=\"refreshPage()\">Refresh this page</button>",
                    link: function (scope, elem) {
                        scope.refreshPage = function () {
                            location.reload();
                        }
                    }
                };
            });

    </script>
</body>
</html>

person Maher    schedule 13.12.2015
comment
Возможно, это поможет вам Angularjs - скрывать контент до загрузки DOM - person Maher; 14.12.2015

Во-первых, в шаблоне 'custom-pager.html' установите ng-show или ng-hide, чтобы скрыть содержимое шаблона.

Во-вторых, вам нужно перевернуть показ или скрыть переменную. Вы можете сделать его видимым несколькими способами. Если вы кэшируете запрос $http в своей службе, вы можете просто снова вызвать его в своей директиве и дождаться запуска обещания.

Кроме того, ваша служба или контроллер могут транслировать событие при выполнении запроса (см. $излучать)

person Jorg    schedule 13.12.2015