ExtJS如何使用MVC在服务器上查询记录或调用方法


ExtJS how to query records or call methods on a server using MVC?

在使用MVC设计的ExtJS应用程序中,如何从php/mysql后端查询记录或在php后端调用方法,同时传递对象或数组数据?

所有我看到的模型,代理,MVC风格的例子,显示简单的例子,如

myModel.load(123, ...

它所做的就是加载id为123的记录。大多数示例还展示了如何创建记录或更新现有记录。

但是如果我想加载一个名字为"John"的用户呢?

看起来也许我需要使用一个商店?

在其他环境中(如AMF消息传递),我通常传递对象——例如,创建一个'User'对象或集合,设置名称,调用类似

的东西
 userService.Load(userObject);

然后,在服务器端我接收到"userService"的请求。load"(服务器上的一个方法),然后接收对象,取出我需要的内容,并返回结果对象(或数组集合)。

是否有关于如何在ExtJS中使用模型/代理查询的任何示例?

那么,如何使用对象呢?我认为模型将是对象,并通过代理定义传递自己?

我认为你得到了它,不知怎么的,错误的模型,模型只是一个数据模型的定义,认为它作为一个行定义在客户端,让我们使用一些例子:

我们在后端有一个订单表,我们可以在前端用Model表示它,像这样:

var orders = Ext.define('Orders'. {
            extend: 'Ext.data.Model',
            fields:['id', 'user_id', 'qty', 'item_ordered'],
            proxy: { 
                       type:' ajax', 
                       url: 'orders.php',
                       reader: {
                                   type: 'json',
                                   root: 'orders'
                               }
                   }
        });

这是一个非常简单的模型,现在,如果我想一次只获取一个订单,我可以使用模型来做到这一点,像这样:

var order = Ext.ModelManager.getModel('Orders');
order.load(1); //This will load the order with id = 1

但是,另一方面,如果我想获得所有的订单(例如,对于一个用户),我将使用Store,商店管理模型的集合,我们可以说它是一个表的视图,由您可以在Model中定义的结构化数据组成的行集合,让我们定义一个使用我们模型的简单商店:

var ordersStore = Ext.create('Ext.data.Store', {
            model:'Orders',
            proxy: {
                       type: 'ajax',
                       url : 'orders.php',
                       reader: {
                                   type: 'json',
                                   root: 'orders'
                               }
                   }
    });
/* This should get us our orders for the user with id=1 and also answer your
question about how to get a user with name = 'John', you can do it in the same way */
ordersStore.load({params:{user_id:1}});

这是关于获取数据,你如何处理你的服务器与PHP,好吧,我相信这是另一个问题。
关于"模型"通过"代理"传递自身,当添加或更新ej:

时为真
order.set('qty', 4);
order.save(); // This will pass the 'Order' Model to the server.

或:

var newOrder = Ext.create('Order', {user_id:1, qty: 2, item_ordered: 66});
newOrder.save(); // This will pass the 'Order' Model to the server too.

在这里你也可以得到更多的信息:
Ext Store文档
Ext Model docs

我希望这能让你开始学习模型和商店。