Backbone.js is a lightweight JavaScript framework that allows adding structure to the client-side code in the MVC pattern. Backbone works in conjunction with its hard-weight dependency, Underscore.js, the utility library that provides a lot of the functional programming support and contains a number of functions, specialized helpers for function binding, JavaScript templating, and so on.
Backbone is based on the MVC principle that stands for Model, View and Controller classes.
The sources for integration of Webix with Backbone are not included into the Webix library package. You can get them from the GitHub repository
To get the profound knowledge of the framework, go to the Backbone.js homepage.
Webix and Backbone can be cross-integrated on multiple levels:
To integrate Backbone framework into your webpage you should include links to it into the document head. Be attentive to specify the right relative paths to the places where the files are stored on your machine. The important point - library need to be included before the webix.js file:
<script type="text/javascript"
src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="./common/underscore.js"></script>
<script type="text/javascript" src="./common/backbone.js"></script>
<link rel="stylesheet" href="../../codebase/webix.css" type="text/css"
media="screen" charset="utf-8">
<script src="../../codebase/webix.js" type="text/javascript" charset="utf-8"></script>
In an integrated app, pure Backbone views and Backbone-Webix views co-exist.
Backbone views are created under Backbone standard pattern:
cView = Backbone.View.extend({
tagName: "h2",
render: function(){
$(this.el).html("Child View");
},
});
var v2 = new cView();
v2.render();
Backbone-Webix integrated views resemble this pattern, yet feature the config property where Webix configuration is stored. To instantiate such a view, a special WebixView() constructor is used:
var ui_config ={
type:"wide", rows:[
{ template:"top", height:35 },
{ type:"wide", cols:[ ..cols ..]},
{ template:"bottom", height:35 }
]
};
var view = new WebixView({
el: ".app1_here", // will be rendered to div with "app1_here" class
config:ui_config
}).render();
Related sample: View
In the code above Webix layout with 3 rows and columns in the second row is created. It is rendered to a div block with the "app1_here" class. As a rule, views should be manually rendered with a dedicated function.
For more info about Webix-Backbone integrated views, read the Backbone Views article.
FilmRecord = Backbone.Model.extend({});
FilmList = Backbone.Collection.extend({
model: FilmRecord,
url:"./common/data.json" //adding data to collection
});
First, let's create a Webix data component, for instance view list:
View: Webix List
$(".app1_here").webix_list({
id:"mylist", width:200,
template:"#title#", select:true
});
Now, when we have a view and a model we can render the model into the list view with the sync method:
//get data
var films = new FilmList();
films.fetch();
//sync collection data with list
$$("mylist").sync(films);
Related sample: Loading data from Collection
The code above renders the list view and fills it with data from the "FilmList" Collection that is comprised of the "FirmRecord" Models.
The sync between data collection and the component can be also removed by the opposite method:
$$("mylist").unsync(films);
It should be said that the above scenario is not the only way to use Webix and Backbone together. Check the below docs for more details.