<html>
<head>
<title>backbone.js-Model</title>
</head>
<body>
</body>
<script src="../../../node_modules/jquery-2.0.2.min.js"></script>
<script src="../../../node_modules/underscore-min.js"></script>
<script src="../../../node_modules/backbone-min.js"></script>
<script>
(function($){
//创建一个model类
Man = Backbone.Model.extend({
url:'/save',
//initialize:model类的构造函数
initialize:function(){
alert('hey, you create a model');
//为model的name属性绑定一个change事件,当name属性改变的时候,会触发
this.bind('change:name', function(){
var name = this.get('name');
alert('你改变了name属性为: ' +name);
});
//为model添加验证规则,会有两个参数,一个当前的model对象,一个是错误信息
this.bind('invalid', function(model, err){
alert(err);
});
},
//defaults:用来为model指定默认属性
defaults:{
name: '张三',
age: '18'
},
//model的验证规则,如果验证错误,会调用invalid,有一个参数attribute用来表示所有的从参数,
validate:function(attributes){
if(attributes.name == ''){
return 'name不能为空';
}
},
aboutMe:function(){
//这里获取model里面的默认属性,必须用get的方式。this.age不能获取
return '我叫' + this.get('name') + ', 今年' + this.get('age') + '岁';
}
});
var man = new Man();
man.set({name:'炉石'});
man.save({name:''});
man.save();//会将model的默认属性发送到对应的url,格式为json
//可以通过man.fetch()方法来从服务端获取数据
var man1 = new Man();
//第一种,直接使用fetch(),会发送get请求道model的url中
man1.fetch();
//第二种,加入参数,发送到指定的url中
man1.fetch({url:'getmans'});
//但是如果要接受服务端的数据,要有一个success函数
man1.fetch({url:'getmans'}, success:function(model, res){
alert('success');
//model为获取到的数据
alert('name= '+model.get('name'));
}, error:function(){
alert('error');
});
})(jQuery);
</script>
</html>