Angular dirPaginate自定义指令 - 获取控制器中的最后一页值

时间:2015-10-14 17:54:43

标签: angularjs angularjs-directive pagination

我需要从控制器内部读取lastPage属性(存在于下面的自定义指令中)的值。

https://github.com/michaelbromley/angularUtils/tree/master/src/directives/pagination

        function generatePagination() {
            if (paginationService.isRegistered(paginationId)) {
                var page = parseInt(paginationService.getCurrentPage(paginationId)) || 1;
                scope.pages = generatePagesArray(page, paginationService.getCollectionLength(paginationId), paginationService.getItemsPerPage(paginationId), paginationRange);
                scope.pagination.current = page;

                scope.pagination.last = scope.pages[scope.pages.length - 1];

                // ** here is the code I added that I would like to work **
                parent.scope.lastPage = scope.pagination.last;

                if (scope.pagination.last < scope.pagination.current) {
                    scope.setCurrent(scope.pagination.last);
                } else {
                    updateRangeValues();
                }
            }
        }

这是指令中作者的上述功能。它有一个名为:scope.pagination.last的属性,我想从我的控制器访问它。我尝试添加类似这样的内容: parent.scope.lastPage = scope.pagination.last; 但这不起作用,或者我不知道如何注射父母等。

1 个答案:

答案 0 :(得分:0)

正如Ori Price指出的那样,这不是一种最佳实践,因为它会使该指令依赖于父范围......但也许您已经知道并且只需要一个解决方案 - 在这种情况下。 $ rootScope是你要找的。

您需要做的3件事:

1。)将其添加为指令的依赖项。

.directive('dirPaginationControls', ['paginationService', 'paginationTemplate','$rootScope', dirPaginationControlsDirective])

2.)实际上将它传递给指令函数:

function dirPaginationControlsDirective(paginationService, paginationTemplate, $rootScope) { ...

3。)在指令中的任何地方使用它...对你来说它看起来像这样:

function generatePagination() {
        if (paginationService.isRegistered(paginationId)) {
            var page =    parseInt(paginationService.getCurrentPage(paginationId)) || 1;
            scope.pages = generatePagesArray(page, paginationService.getCollectionLength(paginationId), paginationService.getItemsPerPage(paginationId), paginationRange);
            scope.pagination.current = page;

            scope.pagination.last = scope.pages[scope.pages.length - 1];


            $rootScope.lastPage = scope.pagination.last;

            if (scope.pagination.last < scope.pagination.current) {
                scope.setCurrent(scope.pagination.last);
            } else {
                updateRangeValues();
            }
        }
    }

你可能需要做$rootScope.$parent.lastPage = scope.pagination.last我不记得我的头脑所以做一个console.log($ rootScope)只是为了查看你有权访问的所有选项。