首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不使用dtColumns和dtOptions的angularjs数据表

不使用dtColumns和dtOptions的angularjs数据表
EN

Stack Overflow用户
提问于 2018-02-28 07:57:29
回答 1查看 2.7K关注 0票数 0

下面是我的代码

1)在index.html文件中,包括js和css如下

代码语言:javascript
复制
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="assets/js/angular.min.js"></script>
<script src="bower_components/datatables.net/js/jquery.dataTables.min.js"></script>
<script src="bower_components/angular-datatables/demo/src/archives/dist/angular-datatables.min.js"></script>
<link rel="stylesheet" href="bower_components/angular-datatables/demo/src/archives/dist/css/angular-datatables.min.css" type="text/css" />

2) app.js

代码语言:javascript
复制
var app1 = angular.module('app', ['datatables']);

3)在app\modules\curd_datatable\curd.controller.js中

代码语言:javascript
复制
'use strict';
curdController.$inject = ['$scope', '$http', '$state', 'config', 'DTOptionsBuilder', 'DTColumnBuilder', ];
function curdController($scope, config, DTOptionsBuilder, DTColumnBuilder) {
    $scope.dtOptions = DTOptionsBuilder.newOptions()
      .withOption('ajax', {
        url: 'data.json',
        type: 'GET'
      })
      .withDataProp('data')
      .withOption('serverSide', true)
      .withOption('processing', true)
      .withOption('order', [[0, 'asc'], [1, 'asc']])
      .withPaginationType('full_numbers');
    $scope.dtColumns = [
      DTColumnBuilder.newColumn('id').withTitle('ID'),
      DTColumnBuilder.newColumn('firstName').withTitle('First name'),
      DTColumnBuilder.newColumn('lastName').withTitle('Last name').notVisible()
    ];

}


module.exports = curdController;

4) app\modules\curd_datatable\curd.html

代码语言:javascript
复制
<div class="container">
    <div class="table-responsive">    
        <div ng-controller="curdController as showCase">
            <table datatable="" dt-options="showCase.dtOptions" dt-columns="showCase.dtColumns" class="row-border hover"></table>
        </div>
    </div>


</div>

5) app\modules\curd_datatable\index.js

代码语言:javascript
复制
angular.module('app').controller('curdController', require('./curd.controller'));

6) app\modules\curd_datatable\data.json

代码语言:javascript
复制
[{
    "id": 860,
    "firstName": "Superman",
    "lastName": "Yoda"
}, {
    "id": 870,
    "firstName": "Foo",
    "lastName": "Whateveryournameis"
}, {
    "id": 590,
    "firstName": "Toto",
    "lastName": "Titi"
}, {
    "id": 803,
    "firstName": "Luke",
    "lastName": "Kyle"
}
]

它给了我以下的错误,

代码语言:javascript
复制
angular.min.js:116 TypeError: Cannot read property 'aDataSort' of undefined
EN

回答 1

Stack Overflow用户

发布于 2018-02-28 12:49:46

首先,更改index.html中的脚本序列

更新的index.html

代码语言:javascript
复制
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="bower_components/datatables.net/js/jquery.dataTables.min.js"></script>
<script src="assets/js/angular.min.js"></script>
<script src="bower_components/angular-datatables/demo/src/archives/dist/angular-datatables.min.js"></script>
<link rel="stylesheet" href="bower_components/angular-datatables/demo/src/archives/dist/css/angular-datatables.min.css" type="text/css" />

app\modules\curd_datatable\curd.controller.js

控制器中组件的顺序应该是相同的。

取代:

代码语言:javascript
复制
function curdController($scope, $http, $state, config, DTOptionsBuilder, DTColumnBuilder) {

通过以下方式:

代码语言:javascript
复制
function curdController($scope, config, DTOptionsBuilder, DTColumnBuilder) {

最终代码

代码语言:javascript
复制
'use strict';
curdController.$inject = ['$scope', '$http', '$state', 'config', 'DTOptionsBuilder', 'DTColumnBuilder'];
function curdController($scope, $http, $state, config, DTOptionsBuilder, DTColumnBuilder) {
    $scope.dtOptions = DTOptionsBuilder.newOptions()
      .withOption('ajax', {
        url: 'data.json',
        type: 'GET'
      })
      .withDataProp('data')
      .withOption('serverSide', true)
      .withOption('processing', true)
      .withOption('order', [[0, 'asc'], [1, 'asc']])
      .withPaginationType('full_numbers');
    $scope.dtColumns = [
      DTColumnBuilder.newColumn('id').withTitle('ID'),
      DTColumnBuilder.newColumn('firstName').withTitle('First name'),
      DTColumnBuilder.newColumn('lastName').withTitle('Last name').notVisible()
    ];

}


module.exports = curdController;

app\modules\curd_datatable\curd.html

删除ng-controllershowCase,因为我们不需要它来访问控制器变量。

代码语言:javascript
复制
<div class="container">
    <div class="table-responsive">
        <table datatable="" dt-options="dtOptions" dt-columns="dtColumns" class="row-border hover"></table>
    </div>
</div>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49024553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档