backbone Model调用save方法的时候提交方式

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方法。

时间: 2024-10-06 05:25:08

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

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

在DAO层调用save()方法,页面上显示成功,但是在数据库中查找时发现数据没有保存到数据库中的原因可能是: 1.Service层中是否在调用DAO层中的save()方法之前添加注解@Transactional,凡是对数据库的更新操作都要加上该句注解. 2.查看项目中的WEB-INF文件夹下面的application.xml文件,看看<tx:annotation-driven transaction-manager="transactionManager"/>标签中是否缺少

直接调用对象方法的两种方式

关于直接调用方法和给对象发送消息调用方法(即perfromSelector和NSInvocation) performSelector是运行时系统负责去找方法的,在编译时候不做任何校验:如果直接调用编译是会自动校验.如果imageDownloader:didFinishWithImage:image:不存在,那么直接调用 在编译时候就能够发现(借助Xcode可以写完就发现),但是使用performSelector的话一定是在运行时候才能发现(此时程序崩溃):Cocoa支持在运行时向某个类添加方法

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

今天交给外包的活遇到一个问题,喊我一起研究,最后解决,让我对spring的事务管理又加深了印象. 先简单说一下项目:项目是Spring和Hibernate集成的JavaEE项目,MVC架构. 外包在service层一个以get开头的方法中写了一些业务逻辑,分别调用了dao层的save和get方法,但是发现get的数据正常显示,数据表中该save的并没有存入数据表,查hibernate生成的sql也只查到了get的语句,没有发现save的语句,也没有报任何错误.很奇怪的现象,不怕报错,就怕它不报错

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

如题: service1: dao1.save(obj);   //失败,应该给spring捕获,但没有,程序继续执行下去了. redisService.fun1();  //被执行 service2: dao1.update(obj);   //失败,错误给spring捕获,抛出异常,程序终止. redisService.fun1(); 经过查找相关资料,确认是因为数据库表主键的问题        <id name="id" type="java.lang.Strin

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

关于Unity3Dproject与androidproject的转换与合并,请參考我的另外一篇博客.假设你对Unity3Dproject增加到androidproject的过程不熟悉.也请先看完以下这篇博客: android与Unity3D交互,fragment显示unity3d视图. 以下,我们来说说本博客的终端,Unity3D调用android的方法: 1.首先,在网络上大家能够看到非常多把android project打包,然后以插件的方式,放入Unity3D工程中来调用的方式,这样的方式

[PHP] Cakephp model save方法不支持tinyint类型存储

不知道为什么 懒得看源码 Model 类调用save()方法的时候不会报错,但是数据无法更新 查了发现是数据库字段使用tinyint类型,我们赋值的时候指定的int, 类型不匹配无法写入. 解决方法是将赋值的时候,将值弄成字符再传入. 参考:http://blog.csdn.net/iefreer/article/details/6904235

01-03-02-2【Nhibernate (版本3.3.1.4000) 出入江湖】CRUP操作-Save方法的一些问题

NHibernate--Save方法: CustomerService.cs 1 public void Save(Customer customer) 2 { 3 ISession session = _sessionManager.GetSession(); 4 ITransaction transaction = session.BeginTransaction(); 5 6 try 7 { 8 session.Save(customer); 9 transaction.Commit();

mongoose中Documents的save方法

调用save方法保存数据有的时候是插入有时候是更新, 数据库 我知道save在保存的时候会检测数据的更改,只是更新更改的部分.所以我重复save时,只是createAt更改那么我最后只应该保存了一条数据,不是2条. 当我保存完数据后短时间内重复保存,确实只是看到保存数据只是更新createAt,并没有insert数据,但是过一段较长时间后,我同样保存重复数据就又会insert新的数据. 奇怪! 我知道了,我重启服务器了.... 使用nodemon开启服务器,我保存文件后自动刷新重启服务器后,感觉

网页表单提交方式大全 菜鸟总结

大家先来看看表单提交的几种方式: 1.<!--通用提交按钮--> <input type="submit" value="提交"> 2.<!--自定义提交按钮--> <button type="Submit">提交</button> 3.<!--图像按钮--> <input type="image" src = "btn.png"