backbone Model

requirejs.config({
    baseUrl: 'js/lib',
    paths:{
        app: '../app'
    }
})
// Start the main app logic.
//requirejs===define===require源码:var requirejs, require, define;
requirejs(['jquery', 'underscore', 'backbone_1.2.3'],
    function   ($,        _,   Backbone) {
        var Book = Backbone.Model.extend(
            {
                defaults:{
                    name:"unknnown",
                    author:"unknown&",
                    price:0
                },
                validate:function(data){
                    if(data.price>100){
                        return "大于100了";
                    }
                }
            }

        );
        /*function Book(){
            this.defaults = 上面那个
        }*/
        var javabook = new Book({
            name:"thinking in java"
        })
        // 监听模型"change"事件
        javabook.on('change', function(model) {
            //console.log('change事件被触发');
        });
        // 监听"change:price"事件
        /*previous()方法接收一个属性名,并返回该属性在修改之前的状态;
         previousAttributes()方法返回一个对象,该对象包含上一个状态的所有数据。
        需要注意的是,previous()和previousAttributes()方法只能在数据修改过程中调用
        (即在模型的change事件和属性事件中调用)*/
        javabook.on('change:price', function(model, value) {
            var price = model.previous('price');
            if(price < value) {
                console.log('价格上涨了' + (value - price) + '元.');
            } else if(price > value) {
                console.log('价格下降了' + (value - price) + '元.');
            } else {
                console.log('价格没有发生变化.');
            }
        });
        // 监听error事件,当验证失败时触发
        javabook.on('invalid', function(model, error) {
            console.log(error);
        });
        // 通过set方法设置模型数据
        javabook.set('name', 'Java7入门经典');
        javabook.set('author', 'Ivor Horton');
        javabook.set('price', 883,{
            validate:true
            //silent : true不校验
        });
        /*unset()方法用于删除对象中指定的属性和数据
        clear()方法用于删除模型中所有的属性和数据*/
        javabook.clear();
        var name = javabook.get("name");
        var author = javabook.escape("author");
        console.log(javabook);
        console.log(name);
        console.log(author);
    }
);

http://yujianshenbing.iteye.com/blog/1748571

posted @ 2015-12-01 15:48  darr  阅读(187)  评论(0编辑  收藏  举报