Что такое модель
Автор Backbone определяет модель следующим образом:
Модель является ядром любого веб -приложения, она содержит интерактивные данные и большую часть логики. Например: преобразование, проверка, атрибуты и разрешения доступа и т. Д.
Итак, давайте сначала создадим модель:
Person = backbone.model.extend ({initiaze: function () {alert ("добро пожаловать в Backbone!");}}); Var person = new Person;В приведенном выше коде мы определяем модель по имени Человек, и после экземпляра мы получаем человека. Каждый раз, когда вы создаете экземпляр модели, метод инициализации () будет автоматически запускается (этот принцип также применяется к сбору, просмотру). Конечно, метод инициализации () не является обязательным при определении модели, но, когда вы используете основу, вы найдете ее незаменимым.
Установите свойства модели
Теперь мы хотим передать некоторые параметры при создании экземпляра модели, чтобы установить свойства модели:
Person = backbone.model.extend ({initiaze: function () {alert ("Добро пожаловать в Backbone!");}}); // set var person = new Person ({name: "Stephenlee", возраст: 22}); // Мы также можем установить var person = new Person () после того, как модель создается с помощью Set () метод. var person = new Person (); Person.set ({name: "Стивенли", возраст: 22});Получить свойства модели
Используя метод модели get (), мы можем получить свойства:
Person = backbone.model.extend ({initiaze: function () {alert ("Добро пожаловать в Backbone!");}}); Var person = new Person ({name: "Stephenlee", возраст: 22}); var age = person.get ("age"); // 22var name = person.get ("name"); // "Стивенли"Установить модель свойств по умолчанию
Иногда вы хотите, чтобы модель включала некоторые значения свойства по умолчанию при его создании, что может быть достигнуто путем определения свойства значений по умолчанию:
Person = backbone.model.extend ({defaults: {name: «lebronjames», возраст: 30,}, инициализировать: function () {alert («добро пожаловать в коэффициент!»);}}); Var person = new Person ({name: «Stephenlee»}); var age = person.get ("Age"); // Поскольку значение возраста не указано во время экземпляра, значение по умолчанию составляет 30VAR name = person.get ("name"); // Если экземпляр установил значение имени, это «Стивенли»Используйте свойства модели
Вы можете настроить методы в модели, чтобы использовать свойства в модели. (Все пользовательские методы по умолчанию для публичных)
Person = backbone.model.extend ({defaults: {name: «lebronjames», возраст: 30, хобби: «баскетбол»}, инициализация: function () {alert ("Добро пожаловать в Backbone!");}, Например: function (hobbyname) {this.set ({hobby: hobbyname}); "Стивенли", возраст: 22}); Person.like («Кодирование»); // Установить хобби Стивенли в Codingvar Hobby = Person.get ("Hobby"); // "кодирование"Слушайте изменение свойств модели
Согласно механизму магистра, мы можем прослушать любой атрибут модели. Далее мы стараемся связать атрибут модели в методе инициализации (), чтобы прослушать его, принимая имя атрибута в качестве примера:
Person = backbone.model.extend ({defaults: {name: «lebronjames», Age: 30,}, инициализация: function () {alert («добро пожаловать в Backbone!»); This.on («Изменение: имя», функция (model) {var name = model.get ("name"); // 'kobebryant' alert (mode mode.get ("name"); // 'kobebryant' alert (mode mode.get ("name"); }}); var person = new Person (); var age = person.set ({name: "kobebryant"});Через приведенный выше код мы знаем, как слушать определенное свойство модели. Предполагая, что нам нужно прослушать все свойства модели, используйте 'this.on ("change", function (model) {}); Полем
Взаимодействие данных между сервером и моделью
Как упоминалось ранее, модель содержит интерактивные данные, поэтому одной из ее функций является выполнение данных, передаваемых с сервера, и взаимодействовать с сервером. Теперь давайте предположим, что на сервере есть пользователь таблицы MySQL, который имеет три идентификатора поля, имя и электронную почту. На стороне сервера используется стиль REST для связи с фронт-конце и использует URL: /пользователь для взаимодействия. Наша модель определяется как:
var usermodel = backbone.model.extend ({urlroot: '/user', defaults: {name: '', email: '' '}});Создать модель
Каждая модель в магистрале имеет идентификатор свойства, который соответствует данным на стороне сервера один за другим. Если мы хотим добавить новую запись к пользователю таблицы на стороне сервера MySQL, нам просто нужно создать экземпляр модели и вызвать метод сохранения (). В настоящее время идентификатор атрибута экземпляра модели пуст, что означает, что модель создана вновь, поэтому Backbone отправит запрос POST на указанный URL.
var usermodel = backbone.model.extend ({urlroot: '/user', defaults: {name: ', email:' ''}}); var user = new usermodel (); // Обратите внимание, что мы не определяем атрибут идентификатора здесь vardetails = {name: 'stephenlee', email: 'stephen.le Модель не имеет атрибута идентификатора, используйте метод save () в настоящее время. Backbone отправит запрос сообщения на сторону сервера. После получения данных, сторона сервера хранит его и возвращает информацию, содержащую ID, ModelUSER.Save (userDetails, {успех: function (user) {alert (user.tojson ());}})В настоящее время в пользовательской таблице MySQL есть дополнительная запись MySQL с именем Стивенли и электронной почты [email protected].
Получите модель
Мы только что создали модель и сохранили ее в базе данных на стороне сервера. Предполагая, что при создании модели значение атрибута идентификатора, возвращаемое на стороне сервера, составляет 1. В настоящее время мы можем получить сохраненные данные через значение идентификатора. Когда мы инициализируем экземпляр модели со значением атрибута идентификатора, через операцию fetch (), Backbone отправит запрос GET на указанный URL.
var user = new usermodel ({id: 1}); // указать значение идентификатора во время инициализации // Использовать метод fetch () для запроса данных от user/1, а сторона сервера вернет полную запись пользователя, включая имя, электронную почту и другую информацию user.fetch ({success: function (user) {alert (user.tojson ());});Обновите модель
Если нам нужно изменить хранимую запись пользователя, используйте известное значение идентификатора и используйте метод save (), но поскольку идентификатор не является пустым в настоящее время, Backbone отправит запрос на установку на указанный URL.
var user = new usermodel ({id: 1, name: 'Stephenlee', электронная почта: '[email protected]'}); // Укажите значение идентификатора при инстанции // Поскольку значение идентификатора определяется, используйте метод save () в настоящее время. Backbone отправит запрос PUT пользователю/1 и изменит электронное письмо записи с помощью идентификатора 1 в базе данных user.save ({email: '[email protected]'}, {успех: function (model) {alert (user.tojson ());}});Удалить модель
Если нам нужно удалить записи в базе данных, используйте известное значение идентификатора и используйте метод Destry (). На этом этапе Backbone отправит операцию удаления в указанный URL.
var user = new usermodel ({id: 1, name: 'Stephenlee', электронная почта: '[email protected]'}); // Указание значения идентификатора при инстанции // Поскольку значение идентификатора будет указано, используйте метод Drest () в настоящее время, Backbone отправит запрос Delete для пользователя/1. После получения запроса данные с идентификатором 1 будут удалены в базе данных user.destroy ({success: function () {alert ('уничтожен');}});Что такое коллекция
Короче говоря, коллекция в магистрали представляет собой упорядоченную коллекцию моделей, например, она может использоваться в следующих ситуациях:
Модель: Студент, Коллекция: Classstudentsmodel: Todo.
Сбор обычно использует только один и тот же тип модели, но модель может принадлежать различным типам сбора, например:
Модель: Студент, Коллекция: Gym ClassModel: Студент, Коллекция: Art ClassModel: Студент, Коллекция: Класс английского
Создать коллекцию
//Define Model Songvar Song = Backbone.Model.extend({ defaults: { name: "Not specified", artist: "Not specified" }, initialize: function(){ console.log("Music is the answer"); }});//Define Collection Albumvar Album = Backbone.Collection.extend({ model: Song //Specify the Model in Collection as Song});var song1 = new Song({ name: "How Bizarre", artist: "OMC" });var song1 = new Song({ name: "How Bizarre", artist: "OMC" });var song2 = new Song({ name: "Sexual Healing", artist: "Marvin Gaye" });var song3 = new Song({ name: "Talk It Over In Bed", artist: "OMC" });var myalbum = новый альбом ([song1, song2, song3]); console.log (myalbum.models); // Вывод [Song1, Song2, Song3]