首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Angular 6 DataTables -如何获取当前页面

Angular 6 DataTables -如何获取当前页面
EN

Stack Overflow用户
提问于 2018-06-15 00:29:12
回答 4查看 4K关注 0票数 2

我正在创建一个带有Angular datatables (https://l-lin.github.io/angular-datatables/#/welcome)的Angular 6应用程序。这是我的组件代码:

代码语言:javascript
运行
复制
import { Component, OnInit, ViewChild } from '@angular/core';
import { HttpClient, HttpResponse } from '@angular/common/http';
import { DataTableDirective } from 'angular-datatables';

@Component({
  selector: 'app-mainmenu',
  templateUrl: './mainmenu.component.html',
  styleUrls: ['./mainmenu.component.css']
})

export class MainmenuComponent implements OnInit {
  @ViewChild(DataTableDirective)
  datatableElement: DataTableDirective;
  dtOptions: DataTables.Settings = {};
  learningPaths: LearningPath[];

  constructor(private http: HttpClient) { }

   ngOnInit(): void {
    const that = this;

    this.dtOptions = {
      pagingType: 'full_numbers',
      pageLength: 10,
      serverSide: true,
      processing: true,
      ajax: (dataTablesParameters: any, callback) => {
        that.http
          .post<DataTablesResponse>(
            'http://localhost:4154/api/LP?p=1'
            ,
            dataTablesParameters, {}
          ).subscribe(resp => {
            that.learningPaths = resp.data;

            callback({
              recordsTotal: resp.recordsTotal,
              recordsFiltered: resp.recordsFiltered,
              data: []
            });
          });
      },
      columns: [{ data: 'icon', orderable: false }, { data: 'name' }, { data: 'description' }],
      order: [[ 1, "asc" ]]
    };
  }
} 

我希望能够将当前页面索引传递给服务器端api。有谁能告诉我正确的方向吗?我可以像这样显示当前页面索引:

代码语言:javascript
运行
复制
{{ (datatableElement.dtInstance | async)?.table().page.info().page }}

但是我不知道如何在进行ajax调用之前访问页面信息。

EN

回答 4

Stack Overflow用户

发布于 2019-05-08 21:07:05

你可以通过使用ajax参数来获得页面编号,看看下面的代码,你会得到一个想法。

代码语言:javascript
运行
复制
ajax: (dataTablesParameters: any, callback) => {
    const page = parseInt(dataTablesParameters.start) / parseInt(dataTablesParameters.length) + 1;
    const rowData = {
      no_of_records: dataTablesParameters.length,
      page: page,
      group_id: 1
    };
    that.http
      .post<DataTablesResponse>(
        'http://localhost:3030/role/list',
        rowData, {}
      ).subscribe(resp => {
        console.log(resp);
        that.persons = resp.data;

        callback({
          recordsTotal: 10,
          recordsFiltered: 20,
          data: []
        });
      });
  },
票数 2
EN

Stack Overflow用户

发布于 2018-07-30 23:33:02

在dataTablesParameters中传递的值不包括当前页。您可以从传递的参数中使用(start + length) + 1来计算。希望这能有所帮助!

票数 1
EN

Stack Overflow用户

发布于 2018-06-15 21:37:06

我只是错过了这一点。所有属性,如顺序、方向、页面大小等都在主体中随post一起发送(dataTablesParameters变量):

代码语言:javascript
运行
复制
ajax: (dataTablesParameters: any, callback) => {
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50862089

复制
相关文章

相似问题

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