apply

apply(callback, params, async)

使用范围: client

编程语言: javascript

父类: Item 类

描述说明

将所有已更新的、已插入的、已删除的记录从实体项数据集发送到应用程序服务端,以写入数据库。

apply 方法有如下参数:

  • callback: 如果参数不存在,并且 async 参数是 false 或是 undefined,发送到服务端的请求是同步的; 否则,将异步执行请求,在收到响应后,将执行回调。

  • params - 一个指定用户定义参数的对象,可以在服务器上的 on_apply 事件处理程序中使用, 以进行一些额外的处理

  • async: 如果值是 true ,并且没有回调参数,将异步执行请求

参数的先后顺序无关紧要。

apply 方法

  • 检查实体项是否是一个明细项,如果它是,返回 and if it is, returns (the master saves the details changes)

  • 检查实体项是否处于 “编辑” 或 “插入” 状体 , 如果是,则提交记录

  • 检查变更记录是否有变化,如果没有,则执行回调函数(如果传递了),然后返回

  • 如果为实体项定义了 on_before_apply 事件处理程序,则触发

  • 将变更发送到服务端。

  • 服务器在接收到求情后,检查是否为实体项定义了 on_apply 事件处理程序, 如果定义了,就执行它。否则,生成 SQL 查询语句并执行,已将变更写入数据库。 请参考 on_apply events 话题。

  • 在生成一个 SQL 查询语句时,会检查发送请求的用户是否有权限进行更改, 如果没有,则抛出一个异常。

  • 将变更写入数据库。

  • 在将变更写入数据库之后,服务器将执行的结果发送到客户端。

  • 如果在服务端上的操作引发了异常,那么在抛出异常之前,客户端也会抛出异常。 如果传了回调参数,将调用它,将错误信息作为回调函数的参数进行传递。

  • 客户端依据执行结果更新变更日志。

  • 如果为实体项定义了 on_after_apply 事件处理程序, 则触发它。

  • 如果传递了回调参数,则调用它。

备注

服务端在将新记录写入数据库表之前,会为主字段生成值。 客户端根据从服务端接收到的信息更新这些字段。 如果你在 on_apply 事件处理程序中 更改了其他字段的值,这些更改不会反映在客户端上。 您可以自己使用像 :doc:`refresh_record <m_refresh_record>`这样的方法更新它们。

示例

var self = this;
this.apply(function(err) {
    if (err) {
        self.alert_error(err);
    }
    else {
        //some code to execute after appling changes
    }
});

另请参见

修改数据集