Как прикрепить опции datatables при использовании пользовательского интерфейса роутера
Я использую angular-datatables для форматирования моих таблиц. Я также использую UI-маршрутизацию для обработки маршрутизации.
Можно определить форматирование dataTable, прикрепив пару объектов к $scope в контроллере ( http://l-lin.github.io/angular-datatables/), например:
angular.module('datatablesSampleApp', ['datatables']).controller('withOptionsCtrl', function($scope, DTOptionsBuilder, DTColumnDefBuilder) {
$scope.dtOptions = DTOptionsBuilder.newOptions()
.withPaginationType('full_numbers')
.withDisplayLength(2)
.withDOM('pitrfl');
$scope.dtColumnDefs = [
DTColumnDefBuilder.newColumnDef(0).notSortable(),
DTColumnDefBuilder.newColumnDef(1).notVisible(),
DTColumnDefBuilder.newColumnDef(2)
];
});
DataTable отображается как:
<table datatable="ng" class="table table-striped table-bordered table-hover">
Мой маршрут определяется как:
.state('unclassified', {
url: "/unclassified",
templateUrl: "/app/documentsUnclassified/documentsunclassified.html",
controller: 'documentUnclassifiedCtrl',
controllerAs: 'documentsUnclassified'
}
Мой вопрос заключается в том, как я могу сделать это наиболее эффективным способом, поскольку у меня нет доступа к $scope в контроллере, когда я использую маршрутизатор пользовательского интерфейса.
1 ответ
Поскольку вы используете controllerAs
синтаксис, вам нужно использовать переменную documentsUnclassified
Вы устанавливаете в своем роутере в HTML:
<table datatable="ng"
dt-options="documentsUnclassified.dtOptions"
dt-column-defs="documentsUnclassified.dtColumnDefs"
class="table table-striped table-bordered table-hover">
</table>