Model代表单个的对象实体。
var User = Backbone.Model.extend({
defaults: {
name: '',
email: ''
}
});
var user = new User();
上面代码使用extend方法,生成了一个User类,它代表model的模板。然后,使用new命令,生成一个Model的实例。defaults属性用来设置默认属性,上面代码表示user对象默认有name和email两个属性,它们的值都等于空字符串。
生成实例时,可以提供各个属性的具体值。
var user = new User ({
id: 1,
name: 'name',
email: 'name@email.com'
});
上面代码在生成实例时,提供了各个属性的具体值。
idAttribute属性
Model实例必须有一个属性,作为区分其他实例的主键。这个属性的名称,由idAttribute属性设定,一般是设为id。
var Music = Backbone.Model.extend({
idAttribute: 'id'
});
get方法
get方法用于返回Model实例的某个属性的值。
var user = new User({ name: "name", age: 24});
var age = user.get("age"); // 24
var name = user.get("name"); // "name"
set方法
set方法用于设置Model实例的某个属性的值。
var User = Backbone.Model.extend({
buy: function(newCarsName){
this.set({car: newCarsName });
}
});
var user = new User({name: 'BMW',model:'i8',type:'car'});
user.buy('Porsche');
var car = user.get("car"); // ‘Porsche'
on方法
on方法用于监听对象的变化。
var user = new User({name: 'BMW',model:'i8'});
user.on("change:name", function(model){
var name = model.get("name"); // "Porsche"
console.log("Changed my car's name to " + name);
});
user.set({name: 'Porsche'}); // Changed my car's name to Porsche
上面代码中的on方法用于监听事件,“change:name”表示name属性发生变化。
urlroot属性
该属性用于指定服务器端对model进行操作的路径。
var User = Backbone.Model.extend({
urlRoot: '/user'
});
上面代码指定,服务器对应该Model的路径为/user。
fetch事件
fetch事件用于从服务器取出Model。
var user = new User ({id: 1});
user.fetch({
success: function (user){
console.log(user.toJSON());
}
})
上面代码中,user实例含有id属性(值为1),fetch方法使用HTTP动词GET,向网址“/user/1”发出请求,从服务器取出该实例。
save方法
save方法用于通知服务器新建或更新Model。
如果一个Model实例不含有id属性,则save方法将使用POST方法新建该实例。
var User = Backbone.Model.extend({
urlRoot: '/user'
});
var user = new User ();
var userDetails = {
name: 'name',
email: 'name@email.com'
};
user.save(userDetails, {
success: function (user) {
console.log(user.toJSON());
}
})
上面代码先在类中指定Model对应的网址是/user
,然后新建一个实例,最后调用save
方法。它有两个参数,第一个是实例对象的具体属性,第二个参数是一个回调函数对象,设定success
事件(保存成功)的回调函数。具体来说,save
方法会向/user
发出一个POST请求,并将{name: 'name', email: 'name@email.com'}
作为数据提供。
如果一个Model实例含有id属性,则save方法将使用PUT方法更新该实例。
var user = new User ({
id: 1,
name: '张三',
email: 'name@email.com'
});
user.save({name: '李四'}, {
success: function (model) {
console.log(user.toJSON());
}
});
上面代码中,对象实例含有id
属性(值为1),save
将使用PUT方法向网址/user/1
发出请求,从而更新该实例。
destroy方法
destroy方法用于在服务器上删除该实例。
var user = new User ({
id: 1,
name: 'name',
email: 'name@email.com'
});
user.destroy({
success: function () {
console.log('Destroyed');
}
});
上面代码的 destroy
方法,将使用HTTP动词DELETE,向网址“/user/1”
发出请求,删除对应的Model实例。