プロジェクトに角度データテーブルバージョンを実装しようとしている JS と Angular は初めてです。
最初に私は「Angular-way」を使用しましたが、これはパフォーマンスに基づく悪い決定であることが判明しました。テーブルにたくさんの行があります。そこで、ajax を使用してデータ テーブルを作成し、dtOptionsBuilder を使用して列を作成し、dtOptions を使用してテーブルを埋めることにしました。
ただし、いくつかの問題があります...不明なプロバイダーエラーが発生します..より具体的には:
エラー: [$injector:unpr] 不明なプロバイダー: datatablesProvider <- datatables <- OverviewCtrl
よくわかりませんが、何が間違っていますか?これが私のコントローラーです。
angular.module("invoices").controller("OverviewCtrl", ["apiService", "datatables", 'utilsService', "$q", "invoiceService", "ngDialog", "$controller", "authFactory", "redirectService", "$rootScope", OverviewCtrl]);
function OverviewCtrl(apiService, utilsService, dtOptionsBuilder, dtColumnBuilder, $q, invoiceService, ngDialog, $controller, authFactory, redirectService, $rootScope) {
var NUMBER_OF_TIMEENTRIES_TO_SHOW = 10;
var vm = this;
if (!authFactory.identity.isAuthenticated) {
redirectService.redirect("overview", 2, "login", 3);
}
vm.dtOptions = dtOptionsBuilder.fromSource(vm.latestInvoices)
.withPaginationType('full_numbers');
vm.dtColumns = [
dtColumnBuilder.newColumn('CompanyName').withTitle('Client'),
dtColumnBuilder.newColumn('ProjectName').withTitle('Project'),
dtColumnBuilder.newColumn('InvoiceID').withTitle('ID'),
dtColumnBuilder.newColumn('InvoiceDate').withTitle('Inv. Date'),
dtColumnBuilder.newColumn('InvoiceStart').withTitle('Start Date'),
dtColumnBuilder.newColumn('InvoiceEnd').withTitle('End Date'),
dtColumnBuilder.newColumn('DKKexVAT').withTitle('DKK ex VAT'),
dtColumnBuilder.newColumn('CustomerInvoiceGroup.Label').withTitle('CIG'),
dtColumnBuilder.newColumn('Attention').withTitle('Attention'),
dtColumnBuilder.newColumn('CustManager').withTitle('Customer Manager'),
dtColumnBuilder.newColumn('Regarding').withTitle('Regarding'),
dtColumnBuilder.newColumn('DueDate').withTitle('Due Date'),
dtColumnBuilder.newColumn('Finalized').withTitle('Finalized'),
dtColumnBuilder.newColumn('Paid').withTitle('Paid')
];
マニュアルに記載されているように、データテーブルを app.module.js に挿入しました。
'use strict';
(function() {
angular.module('app', ['ui.router', 'invoices', 'ngDialog', 'infinite-scroll', 'datatables']);
})();