Backbone.js — это легковесный JavaScript фреймворк на основе паттерна MVC. Он работает в связке с библиотекой Underscore.js, которая предоставляет широкий диапазон API, специальных хелперов для связывания функций, JavaScript шаблонов и прочего.
Фреймворк работает по принципу MVC, при котором весь код распределяется между классами Model, View и Controller.
Ресурсы для интеграции Webix и Backbone не входят в стандартный пакет библиотеки. Вы можете найти их в этом GitHub репозитории.
Более детальную информацию о фреймворке вы найдете на его официальной странице.
Интеграция Webix-Backbone может происходить на различных уровнях:
Чтобы использовать фреймворк в приложении, вам необходимо подключить его ресурсы. Учитывайте, что ресурсы фреймворка необходимо указать перед ресурсами библиотеки:
<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 type="text/javascript" src="../../codebase/webix.js"></script>
В гибридном приложении вы можете одновременно использовать компоненты фреймворка и библиотеки.
Backbone компоненты создаются по стандартному шаблону фреймворка:
var cView = Backbone.View.extend({
tagName: "h2",
render: function(){
$(this.el).html("Child View");
},
});
var v2 = new cView();
v2.render();
Для создания гибридных компонентов используется похожий шаблон. Но здесь у конструктора появляется дополнительное свойство config, в котором хранятся настройки Webix компонентов. Чтобы создать гибридный компонент, необходимо использовать специальный конструктор WebixView:
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", // будет отрисован в div с классом "app1_here"
config: ui_config
}).render();
Related sample: View
В коде выше показано как создать layout с тремя рядами и столбцами во втором ряде. Эта конструкция будет отрисована в блоке div с классом "app1_here". За отрисовку интерфейса отвечает метод render().
Детали можно узнать в соответствующей статье Backbone Компоненты.
FilmRecord = Backbone.Model.extend({});
FilmList = Backbone.Collection.extend({
model: FilmRecord,
url: "./common/data.json" // ссылка на коллекцию данных
});
Для примера, давайте создадим Webix компонент list:
View: Webix List
$(".app1_here").webix_list({
id: "mylist", width: 200,
template: "#title#", select: true
});
Теперь, когда у нас есть готовый компонент и модель данных, мы можем запарсить данные в компонент через метод sync:
// получаем данные
var films = new FilmList();
films.fetch();
// синхронизируем коллекцию данных с list
$$("mylist").sync(films);
Related sample: Loading data from Collection
Код выше отрисует компонент list и заполнит его данными из коллекции "FilmList", которая состоит из моделей "FirmRecord".
Вы можете завершить синхронизацию между компонентом и коллекцией с помощью метода unsync:
$$("mylist").unsync(films);
Ниже вы найдете описание других примеров их совместного использования: