本文同时发布在了起飞网,原文地址:http://www.qeefee.com/extjs-course-7-Ext-Direct
- ExtJS 4.2 教程-01:Hello ExtJS
- ExtJS 4.2 教程-02:bootstrap.js 工作方式
- ExtJS 4.2 教程-03:使用Ext.define自定义类
- ExtJS 4.2 教程-04:数据模型
- ExtJS 4.2 教程-05:客户端代理(proxy)
- ExtJS 4.2 教程-06:服务器代理(proxy)
- ExtJS 4.2 教程-07:Ext.Direct
更多的ExtJS教程,点击进入>>《ExtJS 教程目录》,持续更新中……
在上一节中,我们介绍了ExtJS 中的服务器段数据代理,在介绍到Direct 代理的时候,我们提到了Ext.Direct。这一节我们将重点介绍Ext.Direct的具体用法,并对上一节中Direct代理进行补充。
Ext.Direct 提供了一种使用Javascript 调用服务器端方法的机制,它与服务器端技术无关,因此可以在php、java、.net 等众多平台中使用该技术。
我们本节中将以RemotingProvider 为例进行讲解。对于RemotingProvider 的执行流程,大致上是:定义API,并将API添加到Ext.direct.Manager,然后我们将通过调用API来执行远程请求。请求过程中,ExtJS 将创建一个Ajax 请求,将Remoting有关的数据发送到服务器的Remoter页面,Remoter将对其进行分流,根据action(对应类名)、method(对应方法名)调用不同的方法,完成执行调用后,将封装好的结果返回给客户端。
API 和 Router
在使用Ext.Direct的时候,我们需要将后台的类、方法等封装成API的形式,然后在Ext.direct.Manager 中进行注册。
通常情况下,API 可以由程序根据配置项生成,所谓的生成,无非是根据配置项生成可执行的Javascript代码,并以<script>标签的形式引入到页面中。我们今天将采用直接定义的方式来完成。代码如下:
var userAPI = Ext.create('Ext.direct.RemotingProvider', { url: rootUrl + 'DirectAPI/Router', actions: { User: [ { name: 'GetUserList', len: 0 }, { name: 'GetUser', params: ['name'] } ] } });
userAPI 提供了两个操作,分别是GetUserList 和GetUser,他们都数据类 User。url 指向了DirectAPI/Router,此时我们需要在程序中添加DirectAPIController,然后在里面定义三个方法,代码如下:
public class DirectAPIController : Controller { public static List<User> UserList = null; static DirectAPIController() { if (UserList == null) { UserList = new List<User>(); UserList.Add(new User() { name = "www.qeefee.com", age = 1 }); UserList.Add(new User() { name = "QF"