我在SO上找不到任何类似的问题,所以我怀疑我的问题是由于我的设置,所以我希望有人能够发现我的代码中存在缺陷
我过去曾成功使用过DataTables,但Angular并没有使用,而我在使用数据进行初始加载时遇到了一些麻烦。
我有以下代码和带有fromFnPromise()的代码永远不会被命中。正如您所见,我被迫使用现有的控制器,因此其定义与example的定义不匹配,但我非常确定我应该使用的是什么:< / p>
var controllerName = "gaugeDashboardController";
angular
.module('bps.gauge', ['daterangepicker', 'amChartsDirective', 'angularjs-dropdown-multiselect', 'datatables', 'datatables.bootstrap', 'datatables.buttons'])
.controller(controllerName, Controller);
Controller.$inject = ['$scope', '$location', 'hubservice', '$http', '$state', '$stateParams', '$localStorage', 'coreAppService', '$q', 'DTOptionsBuilder', 'DTColumnDefBuilder'];
function Controller($scope, $location, hubservice, $http, $state, $stateParams, $localStorage, coreAppService, $q, DTOptionsBuilder, DTDefColumnBuilder) {
var vm = this;
vm.dtOptions = DTOptionsBuilder.fromFnPromise(function () {
var defer = $q.defer();
$http.get('/master/js/custom/bps/empty.json').then(function (result) {
defer.resolve(result.data);
});
return defer.promise;
})
.withPaginationType('full_numbers')
.withButtons([
'copy',
'excel'
])
.withOption('responsive', true);
vm.dtInstance = {};
vm.dataTableColumns = [
DTDefColumnBuilder.newColumnDef('Id').withTitle('Id').notVisible(),
DTDefColumnBuilder.newColumnDef('LocationId').withTitle('LocationId').notVisible(),
DTDefColumnBuilder.newColumnDef('ClientId').withTitle('ClientId').notVisible(),
DTDefColumnBuilder.newColumnDef('RecordDate').withTitle('RecordDate'),
DTDefColumnBuilder.newColumnDef('StoreCode').withTitle('StoreCode'),
DTDefColumnBuilder.newColumnDef('LocationName').withTitle('LocationName'),
DTDefColumnBuilder.newColumnDef('SubLocality').withTitle('SubLocality'),
DTDefColumnBuilder.newColumnDef('Locality').withTitle('Locality'),
DTDefColumnBuilder.newColumnDef('Country').withTitle('Country')
];
我还尝试了以下内容,GET请求永远不会被解雇:
DTOptionsBuilder.fromSource('/js/data/test.json')
json文件只包含一个简单的对象数组
HTML:
<table datatable="" dt-options="dataTableOptions" dt-columns="dataTableColumns" dt-instance="dtInstance" dt-column-defs="dtColumnDefs" class="row-border hover"></table>
控制器名称未在HTML中指定,而是在routes.config.js文件中指定,如下所示:
.state('app.gauge_dashboard', {
url: '/gauge/dashboard',
title: 'Gauge Dashboard',
controller: 'gaugeDashboardController',
controllerAs: 'gdc',
templateUrl: helper.basepath('Bps/GaugeDashboard'),
params: {
}
})
因此,在我理解这种语法时,控制器名称以编程方式设置为&#39; gaugeDashboardController&#39;当我的HTML(在网址:&#34; / guage / dashboard&#34;)。所以我认为范围是正确的。最初我注意到依赖错误,我对DTDefColumnBuilder
和DTOptionsBuilder
的有效性有例外
我确保我的JS文件包含在指定here的正确顺序中
我确实在jquery.dataTables.js中引发了异常&#34;无法读取属性&#39; aDataSort&#39;未定义&#34;,但在执行上述代码之后。
在我看来好像我错过了一些实例化方法调用,但是我没有遗漏here。
我真的想要实现两件事: