我需要从控制器内部读取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; 但这不起作用,或者我不知道如何注射父母等。
答案 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)只是为了查看你有权访问的所有选项。