horizon使用的是backbone框架,但是我们的后台api都是只接收post请求,请求的路径为/api/,根据backbone的官档解释:

backbone的model.save方法会判断当前的model对象是否存在存在服务器中,如果存在服务器中,则调用"update" (HTTP PUT), 如果不存在,则调用"create" (HTTP POST), 判断的依据即为当前的model的属性'id'是否存在。

举例如下:

    var UpdateAgentV = ModalView.extend({
initialize: function(data) {
this.model = new UpdateAgentM();
this.setDefault();
this.defaults.id = 'edit-agent';
this.defaults.header = translate('operations.edit');
this.renderModal(); this.model.bind('change', this.render, this);
this.model.set({
agents_id: data.project_id
});
this.getAgent(data.project_id);
},
getAgent: function(project_id){
var $this = this;
this.ajaxRequest({
action: 'GetAgentsDetail',
project_id: project_id
}, function(res){
$this.model.set({
account_bank: res.data.account_bank,
account_name: res.data.account_name,
account_number: res.data.account_number,
url: res.data.url,
logo: res.data.logo,
company: res.data.company,
});
});
},
render: function() {
tpl = _.template($("#template-edit-agent").html());
this.defaults.body = tpl(this.model.toJSON());
this.$el.html(this.template(this.defaults));
$('.modal-dialog').draggable({ handle: "div.modal-header" });
return this;
},
});
var UpdateAgentM = ModalModel.extend({
defaults: {
action: 'UpdateAgents',
agents_id: '',
account_bank: '',
account_name: '',
account_number: '',
url: '',
logo: '',
company: '',
},
initialize: function() {
this.validator();
},
validator: function() {
$("#edit-agent").find("form").validate({
rules: {
account_bank: {
required: true
},
account_name: {
required: true
},
account_number: {
required: true
},
url: {
required: true
},
logo: {
required: true
},
company: {
required: true
},
}
});
},
create: function(element) {
var data = this.formSerialize(element);
this.set(data);
this.saved(agentsView);
}
});

上例中若将UpdateAgentV的initialize的this.model.set({agents_id: data.project_id});改为this.model.set({id: data.project_id});, 则在model调用save方法时则会认为当前的model已经存在,提交数据就会用PUT方法。

backbone Model调用save方法的时候提交方式的更多相关文章

  1. Django model重写save方法及update踩坑记录

    一个非常实用的小方法 试想一下,Django中如果我们想对保存进数据库的数据做校验,有哪些实现的方法? 我们可以在view中去处理,每当view接收请求,就对提交的数据做校验,校验不通过直接返回错误, ...

  2. CakePHP采用model的save方法更新数据所需查询

    采用model的save方法更新数据所需查询 1. 验证时候要确认是update 或者 create,以便使用对应规则 public $validate = array( 'field_name' = ...

  3. 调用save()方法,页面显示保存成功,但是数据库中没有值的原因

    在DAO层调用save()方法,页面上显示成功,但是在数据库中查找时发现数据没有保存到数据库中的原因可能是: 1.Service层中是否在调用DAO层中的save()方法之前添加注解@Transact ...

  4. 覆盖Django mysql model中save方法时碰到的一个数据库更新延迟问题

    最近有一个需求,通过django的admin后台,可以人工配置5张表的数据,这些数据进行一些业务规则处理后会统一成一份数据缓存在一个cache之中供服务端业务访问,因而任何一张表的数据更新(增.删.改 ...

  5. JS与OC交互,JS中调用OC方法(获取JSContext的方式)

    最近用到JS和OC原生方法调用的问题,查了许多资料都语焉不详,自己记录一下吧,如果有误欢迎联系我指出. JS中调用OC方法有三种方式: 1.通过获取JSContext的方式直接调用OC方法 2.通过继 ...

  6. SpringMVC+Hibernate架构save方法事务未提交

    今天同事遇到一个问题,一起研究,最后解决,让我对spring的事务管理又加深了印象. 先简单说一下项目:项目是Spring和Hibernate集成的JavaEE项目,MVC架构. 外包在service ...

  7. Model的save方法的使用

    在使用类方法创建对象的时候发生save()总提示缺少self参数的错误: class BookInfo(models.Model): #创建书本信息类,继承models.Model booktitle ...

  8. spring HibernateTemplate.save() 方法的自动提交问题

    如题: service1: dao1.save(obj);   //失败,应该给spring捕获,但没有,程序继续执行下去了. redisService.fun1();  //被执行 service2 ...

  9. Unity3D调用android方法(非插件方式)

    关于Unity3Dproject与androidproject的转换与合并,请參考我的另外一篇博客.假设你对Unity3Dproject增加到androidproject的过程不熟悉.也请先看完以下这 ...

随机推荐

  1. Python进阶---python strip() split()函数实战(转)

    先看一个例子: >>> ipaddr = 10.122.19.10 File "", line 1 ipaddr = 10.122.19.10 ^ SyntaxE ...

  2. Visual studio之C# 重新定义Messbox的显示窗口位置

    背景 当前做的APP需要新建一个设置窗口,该设置窗口会出现在靠近屏幕边缘位置,但主窗口铺满屏幕,设置窗口会弹出一些讯息,但默认情况下Messagebox窗口会居中于主窗口,这不太符合要求,正常应该居中 ...

  3. 09-hibernate单表操作(1)

    1,单一主键 2,基本类型 3,对象类型 4,组件属性 5,单表操作 单一主键 常用生成策略: assigned 有程序员生成(手工) native 由数据库底层,如果是mysql是increment ...

  4. 准备你的Adempiere开发环境(1)- 编译

    1. 安装JDK 1.6. 2. 安装Eclipse IDE for Java EE Developers. 3. 导入adempire-360lts: 4. 关闭adempiere-360lts的B ...

  5. ssh2 三大框架整合

    提示:eclipse环境.工程环境.tomcat环境的jdk保持一致 1.新建一个工程,把工程的编码为utf-8 2.把jsp的编码形式改成utf-8 3.把jar包放入到lib下           ...

  6. MongoDB - 内嵌角色

    数据库用户角色(每个数据库都有的角色)   角色名 说明 read 对non-system集合的读取权限,以及以下system集合的读取权限:system.indexes,system.js,syst ...

  7. Current thread must be set to single thread apartment (STA) mode before OLE,当前线程不在单线程单元中,因此无法实例化 ActiveX 控件“8856f961-340a-11d0-a96b-00c04fd705a2”。

    Add the STAThreadAttribute attribute on the Main method. This attribute is required if your program ...

  8. 如何通过 AAR 形式集成 leakcanary-android 服务

    如何通过 AAR 形式集成 leakcanary-android 服务 如何通过在线引用的方式拿到所有相关的依赖项文件? #1.禁用 Gradle 离线模式 #2.按照文档要求添加项目依赖 #3.Sy ...

  9. PHPCMS模块开发相关文件

    名称 类型说明 Guestbook 模块后台控制器 index 模块前台控制器 Install 安装文件夹 ├templates ├config.inc.php ├extention.inc.php ...

  10. 【大话QT之十三】系统软件自己主动部署实现方案

    本篇文章是对[大话QT之十二]基于CTK Plugin Framework的插件版本号动态升级文章的补充,在上篇文章中我们阐述的重点是新版本号的插件已经下载到plugins文件夹后应该怎样更新本地正在 ...