Introduction
Welcome to the "Demonstrate Backbone.js" article series. This article demonstrates how to create and use a Model in Backbone.js. This article starts with the concept of Backbone.js and various components of it. Our previous articles provided an introduction to Backbone.js. Part 1, Part 2 and Part 3 provided model implementation. You can read them from the following:
In this part we will see more about Model implementation in Backbone.js.
Here we will see how to bind a method with a property. We can fire any event or we can get notification if we bind a method with a Model property.
Notification about change in Model Property
In the following snippet we will bind a change method with the name property of a Product Model. Now the advantage is that when we change the name property, the bind trigger will be fired. Have a look at the following snippet.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="JavaScript.aspx.cs" Inherits="JavaScript.JavaScript" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<script src="backbone/Jquery.js"></script>
<script src="backbone/underscore-min.js"></script>
<script src="backbone/backbone-min.js"></script>
</head>
<body>
<form id="form1" runat="server">
<script>
Product = Backbone.Model.extend({
defaults: {
name: 'Xperia',
manufacturer: 'Sony'
},
initialize: function () {
this.bind("change:name", function (model) {
var name = model.get("name");
console.log("Changed Brand name to:- " + name);
});
}
});
var product = new Product({});
product.set({ name: 'Apple' });
</script>
</form>
</body>
</html>
Here we are binding the name property with a callback function within the initialize block and we are changing the name property outside of the mode.
Here is the sample output.
Notification about change in entire Model object
We can also bind the entire Model object to the callback function. In the following snippet we are binding the entire object to the callback function.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="JavaScript.aspx.cs" Inherits="JavaScript.JavaScript" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<script src="backbone/Jquery.js"></script>
<script src="backbone/underscore-min.js"></script>
<script src="backbone/backbone-min.js"></script>
</head>
<body>
<form id="form1" runat="server">
<script>
Product = Backbone.Model.extend({
defaults: {
name: 'Xperia',
manufacturer: 'Sony'
},
initialize: function () {
this.bind("change:name", function (model) {
var name = model.get("name");
var manufacturer = model.get("manufacturer")
console.log("Changed Brand name to:- " + name);
console.log("Changed Manufacturer name to:-" + manufacturer);
});
}
});
var product = new Product({});
product.set({ name: 'Iphone', manufacturer: 'Apple' });
</script>
</form>
</body>
</html>
We are creating one object of the Model class outside of the Model and then we are setting the property of it. So, when we are setting a new property in the object of the Model class, the default property value is bing changed. Then the trigger is being fired.
Here is the output of this sample implementation.
Display Id of each Model Object
When we create a new object of the Model class, in the background Backbone.js assigns a unique ID called “cid” with each and every object. In the following snippet we will try to print those “cid” values. Have a look at the following snippet.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="JavaScript.aspx.cs" Inherits="JavaScript.JavaScript" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<script src="backbone/Jquery.js"></script>
<script src="backbone/underscore-min.js"></script>
<script src="backbone/backbone-min.js"></script>
</head>
<body>
<form id="form1" runat="server">
<script>
Product = Backbone.Model.extend({
defaults: {
name: 'Xperia',
manufacturer: 'Sony'
}
});
var product = new Product({});
var productp1 = new Product({});
var productp2 = new Product({});
console.log('ID of Object:- ' + product.cid);
console.log('ID of Object:- ' + productp1.cid);
console.log('ID of Object:- ' + productp2.cid);
</script>
</form>
</body>
</html>
Here we have created a “Product” model and then we are creating three objects of the “Product” Model then we are printing their “cid”. Here is the sample output of the example above.
Summary
In this article, I explained how to bind any method to an object of the model class or any property of the model class. In future articles we will understand more about Models with examples. I hope you have liked it. Happy coding.