前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >backbonejs1.0.0数据模型验证部分代码更新set和save的使用

backbonejs1.0.0数据模型验证部分代码更新set和save的使用

作者头像
the5fire
发布2019-02-28 17:19:58
5660
发布2019-02-28 17:19:58
举报

数据验证部分更新到backbone.js1.0.0

经常有网友问说为啥你的代码不能执行,如果你是完全copy我的代码,那基本上不会出错,我的代码都是能正常运行之后才会放上来的。至于很多人不能运行的原因我猜测只是大家只是把我的js部分代码拿走,没有看完整的上下文,我之前的代码没有注意版本问题,很多都是基于backbone0.3.x写的。如果你用了最新的版本那可能有些部分会出错,毕竟backbone也会不断的改进修复之前的一些问题。

比如说那篇文章 backbone中的model实例 <http://www.the5fire.com/3-backbone-model.html>_ 上面第5部分的数据验证,backbone在set中并没有默认的触发验证,而在之前应该是默认的(我只看了最新版的backbone源码),在save时会触发验证。推荐大家在遇到问题的时候可以直接看源码,backbone的代码是比较好读懂的。

说回正题,要解决那个set时验证的问题只需要在set时加一个参数 set({name:''},{'validate':true} 就行了,代码如下:

.. code:: html

代码语言:javascript
复制
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>the5fire-backbone-model</title>
    </head>
<body>

</body>
<script src="http://backbonejs.org/test/vendor/jquery.js"></script>
<script src="http://backbonejs.org/test/vendor/underscore.js"></script>
<script src="./backbone.js"></script>
<script>
    (function ($) {
    Man = Backbone.Model.extend({
        initialize: function(){
            alert('Hey, you create me!');
            //初始化时绑定监听
            this.bind("change:name",function(){
                var name = this.get("name");
                alert("你改变了name属性为:" + name);
            });
        },

        defaults: {
            name:'张三',
            age: '38'
        },

        validate:function(attributes, options){
            if(attributes.name == '') {
                return "name不能为空!";
            }
        },
        aboutMe: function(){
            return '我叫' + this.get('name') + ',今年' + this.get('age') + '岁';
        }
    });

    var man = new Man;
    man.on('invalid', function(model, error){
        alert(error);
    });
    man.set({name:''});
    //man.set({name:''}, {'validate':true});  //手动触发验证
    //man.save(); //save时触发验证。根据验证规则,弹出错误提示。

    })(jQuery);
    </script>
</html>

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2013-05-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据验证部分更新到backbone.js1.0.0
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档