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. 转:java中数组与List相互转换的方法

    1.List转换成为数组.(这里的List是实体是ArrayList) 调用ArrayList的toArray方法. toArray public <T> T[] toArray(T[] ...

  2. WCF 之 概述

    WCF全称是Windows Communication Foundation,它是.NET3.0的重要组成部分,用来解决Windows下的一些通信方面的问题.WCF是Microsoft平台上的SOA架 ...

  3. unable to connect to ssl://gateway.sandbox.push.apple.com:2195 错误

    使用APNS 搭建苹果推送服务器错误:unable to connect to ssl://gateway.sandbox.push.apple.com:2195 错误 1:检查你的服务器的端口 21 ...

  4. 算法笔记_160:算法提高 约数个数(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 输入一个正整数N (1 样例输入 12 样例输出 6 样例说明 12的约数包括:1,2,3,4,6,12.共6个 2 解决方案 具体代码如下: im ...

  5. Springmvc UPDATE 数据时 ORA-01858:a non-numeric character was found where a numeric was expected

    ORA-01858:a non-numeric character was found where a numeric was expected 异常. 我的代码: 主要是绑定变量带出来的问题. 出错 ...

  6. CentOS erlang安装、emqtt

    安装erlang 如果未安装以后程序,请先安装依赖   $sudo yum install gcc gcc-c++ glibc-devel make ncurses-devel openssl-dev ...

  7. Spring jar 下载地址

    Spring jar 下载地址 http://repo.springsource.org/libs-release-local/org/springframework/spring/

  8. self.navigationItem.titleView 不居中显示的问题

    自定义一个AUIView, AUIView * v=[AUIView new]; self.navigationItem.titleView = v; 在AUIView类内重写 setFrame -  ...

  9. EF(EntityFramework) Migrations 迁移

    1.开启程序包管理器控制台 2.安装EntityFramework PM> Install-Package EntityFramework   3.启用迁移 PM> Enable-Migr ...

  10. ATITIT.翻译模块的设计与实现 api attilax 总结

    ATITIT.翻译模块的设计与实现 api attilax 总结 1. 翻译原理1 2. TMX格式是国际通用格式(xml)1 2.1. 方法/步骤2 3. TRADOS2 4. ATITIT.翻译软 ...