我正在尝试将Angular DataTables与服务器端处理选项一起使用,但是当我尝试在其“
Angular方式示例
”中启用它时,仅呈现第一个请求,随后的请求(分页,排序,搜索)被发送,他们从不更新表。
经过一番挖掘,我发现了一个与用户无关的注释,建议您ajax
使用自己的函数覆盖该选项以处理服务器端调用。
这里的技巧是将一个空数组返回到DataTables回调,因此它不会使用其渲染器来渲染表。这将由Angular完成。为服务器指定列名称也是一个好主意。
ngOnInit(): void {
var that = this;
this.dtOptions = {
pagingType: 'full_numbers',
serverSide: true,
processing: true,
ajax: (dataTablesParameters: any, callback) => {
that.http
.post<DataTablesResponse>('/api/Persons', dataTablesParameters, {})
.subscribe(resp => {
that.persons = resp.data;
callback({
recordsTotal: resp.recordsTotal,
recordsFiltered: resp.recordsFiltered,
data: [],
});
});
},
columns: [
{ data: "id" },
{ data: "firstName" },
{ data: "lastName" },
],
};
}
由于DataTables认为没有要显示的行,因此将显示“无可用数据”消息。处理它的最简单方法是用CSS隐藏它。您可以将其添加到您的全局styles.css中
.dataTables_empty {
display: none;
}
然后在模板中自己显示:
<tr *ngIf="persons?.length == 0">
<td colspan="3" class="no-data-available">No data!</td>
</tr>
这是完整的代码。在Angular 5.0.0,datatables.net 1.10.16和angular-datatables 5.0.0中进行了测试:
angular-way-server-side.component.ts
import { Component, OnInit } from '@angular/core';
import { HttpClient, HttpResponse } from '@angular/common/http';
import { DataTablesResponse } from '../datatables/datatables-response';
import { Person } from './person';
@Component({
selector: 'app-angular-way-server-side',
templateUrl: 'angular-way-server-side.component.html',
styleUrls: ['angular-way-server-side.component.css'],
})
export class AngularWayServerSideComponent implements OnInit {
dtOptions: DataTables.Settings = {};
persons: Person[];
constructor(private http: HttpClient) { }
ngOnInit(): void {
var that = this;
this.dtOptions = {
pagingType: 'full_numbers',
serverSide: true,
processing: true,
ajax: (dataTablesParameters: any, callback) => {
that.http
.post<DataTablesResponse>('/api/Persons', dataTablesParameters, {})
.subscribe(resp => {
that.persons = resp.data;
callback({
recordsTotal: resp.recordsTotal,
recordsFiltered: resp.recordsFiltered,
data: [],
});
});
},
columns: [
{ data: "id" },
{ data: "firstName" },
{ data: "lastName" },
],
};
}
}
angular-way-server-side.component.html
<table datatable [dtOptions]="dtOptions" class="row-border hover">
<thead>
<tr>
<th>ID</th>
<th>First name</th>
<th>Last name</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let person of persons">
<td>{{ person.id }}</td>
<td>{{ person.firstName }}</td>
<td>{{ person.lastName }}</td>
</tr>
<tr *ngIf="persons?.length == 0">
<td colspan="3" class="no-data-available">No data!</td>
</tr>
</tbody>
</table>
angular-way-server-side.component.css
.no-data-available {
text-align: center;
}
人
export class Person {
id: number;
firstName: string;
lastName: string;
}
数据表响应
export class DataTablesResponse {
data: any[];
draw: number;
recordsFiltered: number;
recordsTotal: number;
}
src / styles.css
.dataTables_empty {
display: none;
}
服务器端的实现方式几乎与使用带JavaScript /
jQuery的数据表的方式相同。您可以在PHP中看到一个非常简单的示例实现。
问题内容: 我已经能够让控制器将$ on侦听器与一起使用。 但我看不到任何有关如何获取服务以监听事件的文档。 我试过了,但是只允许一个听众。我希望多个服务中的侦听器,无论其父控制器是否在作用域内。 问题答案: 经过一番试验后,事实证明,使用最少的代码即可将事件发送到服务。 如果有其他人遇到此问题,请遵循示例服务代码。 该样本在获得相应广播后将服务模型保存并还原到本地存储中
我有一个在Liberty WebSphere Server 17.0.0.2上使用AngularJSP的项目,现在我必须对其进行升级。该项目需要升级到Angular 4 Liberty,我不知道如何正确地完成。 我现在尝试过的是: 使用角度 CLI 生成项目以生成分离文件夹。然后,我把这个分歧放在网络-INF上 提前感谢。
本文向大家介绍Python Websocket服务端通信的使用示例,包括了Python Websocket服务端通信的使用示例的使用技巧和注意事项,需要的朋友参考一下 1、唠唠叨叨 最近又回顾了下Websocket,发现已经忘的七七八八了。于是用js写了客户端,用python写了服务端,来复习一下这方面的知识。 WebSocket 是一种标准协议,用于在客户端和服务端之间进行双向数据传输。但它跟
我想通过客户端中MethodDescriptor的InputStream调用grpc服务器,但我没有成功。这是我的代码: grpc all dependency的版本为: 在服务器中,我的EchoServiceImpl扩展了EchoServiceGrpc。EchoServiceImplBase,重写echo rpc方法。我在构建服务器之前导出inputstream服务。 在客户机中,我创建了Inp
我读过,无融资创业时注入应该让所有孩子共享同一个实例,但是我的主组件和头组件(主应用程序包括头组件和路由器出口)各自获得了我的服务的单独实例。 我有一个FacebookService,用来调用facebook javascript api,还有一个UserService,使用FacebookService。这是我的引导程序: 从我的日志记录来看,引导调用似乎完成了,然后我看到在每个构造函数、Mai
我正在使用收集器跟踪java服务中的跨度,这一服务是http和grpc。收集器终结点是localhost:55680。此java服务跟踪成功。 现在,我想使用这个收集器基于gRPC跟踪我的go服务。 在我的go服务中,我复制以下文件:interceptor。去grpctrace。从repo opentelemetry转到contrib,这里https://github.com/open-telem