¿Qué es un modelo?
El autor de Backbone define el modelo de la siguiente manera:
El modelo es el núcleo de cualquier aplicación web, contiene datos interactivos y la mayor parte de la lógica. Por ejemplo: conversión, verificación, atributos y permisos de acceso, etc.
Entonces, primero creemos un modelo:
Persona = backbone.model.extend ({inicialize: function () {alert ("¡Bienvenido a Backbone!");}}); Var persona = nueva persona;En el código anterior, definimos a una persona con nombre de modelo, y después de la instancia, obtenemos una persona. Cada vez que instanciará un modelo, el método Initialize () se activará automáticamente (este principio también se aplica a la colección, ver). Por supuesto, el método Initialize () no es obligatorio al definir un modelo, pero a medida que usa Backbone, lo encontrará indispensable.
Establecer propiedades del modelo
Ahora queremos pasar algunos parámetros al crear una instancia de modelo para establecer las propiedades del modelo:
Persona = backbone.model.extend ({inicialize: function () {alert ("¡Bienvenido a Backbone!");}}); // establecer var persona = nueva persona ({nombre: "Stephenlee", edad: 22}); // También podemos establecer var persona = nueva persona () después del modelo está instantiado por el método set (). Var Person = New Person (); Person.set ({nombre: "Stephenlee", edad: 22});Obtener propiedades del modelo
Usando el método get () del modelo, podemos obtener las propiedades:
Persona = backbone.model.extend ({inicialize: function () {alert ("¡Bienvenido a Backbone!");}}); Var persona = nueva persona ({nombre: "Stephenlee", edad: 22}); var age = persona.get ("edad"); // 22Var Name = Person.get ("Nombre"); // "Stephenlee"Establecer propiedades predeterminadas del modelo
A veces desea que el modelo incluya algunos valores de propiedad predeterminados al instanciarlo, lo que se puede lograr definiendo la propiedad predeterminada del modelo:
Persona = backbone.model.extend ({defaults: {name: "leBronJames", edad: 30,}, inicialize: function () {alert ("¡Bienvenido a Backbone!");}}); Var persona = nueva persona ({name: "Stephenlee"}); var age = persona.get ("edad");; // Debido a que el valor de edad no se especifica durante la instancia, el valor predeterminado es 30var name = persona.get ("nombre"); // Si la instancia ha establecido el valor del nombre, es "Stephenlee"Utilice las propiedades del modelo
Puede personalizar los métodos en el modelo para usar propiedades dentro del modelo. (Todos los métodos personalizados predeterminados a público)
Persona = backbone.model.extend ({defaults: {name: "leBronjames", edad: 30, hobby: "baloncesto"}, inicialize: function () {alert ("Bienvenido a la red troncal!");}, Me gusta: function (hobbyName) {this.set ({hobby: hobbyname});},}); var (name (name: {name: {n. "Stephenlee", edad: 22}); Person.ike ("Codificación"); // establecer el pasatiempo de Stephenlee en CodingVar Hobby = Person.get ("Hobby"); // "Codificación"Escuche el cambio de propiedades del modelo
Según el mecanismo de la columna vertebral, podemos escuchar cualquier atributo del modelo. A continuación, intentamos unir el atributo de un modelo en el método Initialize () para escucharlo, tomando el nombre del atributo como ejemplo:
Persona = backbone.model.extend ({defaults: {name: "leBronJames", Age: 30,}, inicialize: function () {alert ("¡Bienvenido a Backbone!"); This.on ("cambie: name", function (model) {var name = model.get ("name"); // 'kobebryant' alerta ("cambió mi nombre a" + name);} Var Person = New Person (); var age = persona.set ({nombre: "kobebryant"});A través del código anterior, sabemos cómo escuchar una determinada propiedad del modelo. Suponiendo que necesitemos escuchar todas las propiedades del modelo, use 'this.on ("cambio", función (modelo) {}); .
Interacción de datos entre servidor y modelo
Como se mencionó anteriormente, el modelo contiene datos interactivos, por lo que una de sus funciones es llevar datos transmitidos desde el servidor e interactuar con el servidor. Ahora supongamos que hay un usuario de MySQL en el servidor, que tiene tres ID de ID, nombre y correo electrónico de los campos. El lado del servidor utiliza el estilo REST para comunicarse con el front-end y utiliza la URL: /usuario para interactuar. Nuestro modelo se define como:
var usermodel = backbone.model.extend ({urlroot: '/user', defaults: {name: '', correo electrónico: ''}});Crear un modelo
Cada modelo en Backbone tiene una ID de propiedad, que corresponde a los datos del lado del servidor uno por uno. Si queremos agregar un nuevo registro al usuario de la tabla MySQL del lado del servidor, solo necesitamos instanciar un modelo y llamar al método Guardar (). En este momento, la ID de atributo de la instancia del modelo está vacía, lo que significa que el modelo está recientemente creado, por lo que Backbone enviará una solicitud de publicación a la URL especificada.
var usermodel = backbone.model.extend ({urlroot: '/user', defaults: {name: '', correo electrónico: ''}}}); var userer = new usermodel (); // Tenga en cuenta que no definimos el atributo de identificación aquí Var userdetails = {name: 'stephenlee', correaje: 'stephen.lee@mencoplAplAl no tiene un atributo de identificación, use el método save () en este momento. Backbone enviará una solicitud de publicación al lado del servidor. Después de recibir los datos, el lado del servidor los almacena y devuelve la información que contiene la ID a ModelUser.save (UserDetails, {Success: Function (User) {Alert (user.toJson ());}})En este momento, hay un registro adicional en la tabla de usuarios de MySQL en el servidor con el nombre de Stephenlee y envíe un correo electrónico a [email protected].
Obtener un modelo
Acabamos de crear un modelo y lo almacenamos en la base de datos del lado del servidor. Suponiendo que al crear el modelo, el valor del atributo de ID devuelto por el lado del servidor es 1. En este momento, podemos recuperar los datos almacenados a través del valor de ID. Cuando inicializamos una instancia de modelo con el valor del atributo de identificación, a través de la operación Fetch (), Backbone enviará una solicitud GET a la URL especificada.
VAR user = new Usermodel ({ID: 1}); // Especifique el valor de ID durante la inicialización // Use el método fetch () para solicitar datos del usuario/1, y el lado del servidor devolverá el registro completo del usuario, incluido el nombre, el correo electrónico y otro usuario de la información.Actualizar un modelo
Si necesitamos modificar el registro de usuario almacenado, use el valor de ID conocido y use el método Save (), pero debido a que la ID no está vacía en este momento, Backbone enviará una solicitud de put a la URL especificada.
VAR user = new Usermodel ({ID: 1, nombre: 'Stephenlee', correo electrónico: '[email protected]'}); // Especifique el valor de ID al instanciar // porque el valor de ID se especifica, use el método save save () en este momento. Backbone enviará una solicitud PUT al usuario/1, y modificará el correo electrónico del registro con ID 1 en la base de datos user.save ({correo electrónico: '[email protected]'}, {Success: Function (Model) {Alert (user.toJson ());});Eliminar un modelo
Si necesitamos eliminar registros en la base de datos, use el valor de identificación conocido y use el método Destroy (). En este punto, Backbone enviará una operación de eliminación a la URL especificada.
VAR user = new Usermodel ({ID: 1, nombre: 'Stephenlee', correo electrónico: '[email protected]'}); // Especificar el valor de identificación al instanciar // porque el valor de identificación se especifica, use el método Destroy () en este momento, Backbone enviará una solicitud deleitar al usuario/1. Después de recibir la solicitud, los datos con ID 1 se eliminarán en la base de datos user.destroy ({Success: function () {alert ('destruido');}});¿Qué es la colección?
En resumen, la colección en la columna vertebral es una colección ordenada de modelos, por ejemplo, puede usarse en las siguientes situaciones:
Modelo: Estudiante, Colección: ClassStudentsModel: TODO Elemento, Colección: TODO ListModel: Animal, Colección: Zoo
La colección generalmente solo usa el mismo tipo de modelo, pero el modelo puede pertenecer a diferentes tipos de colección, como:
Modelo: Estudiante, Colección: Classmodelo de gimnasio: Estudiante, Colección: Art ClassModel: Estudiante, Colección: Clase de inglés
Crea una colección
// Define el modelo SongVar Song = Backbone.model.extend ({defaults: {name: "no especificado", artista: "no especificado"}, inicialize: function () {console.log ("Music es la respuesta");}}); // COLLECCIÓN DE LA COLLECCIÓN ALBUBVAR = BackBone.Collection.extend ({{Modelo: Song // Specify The Model en Collection}); 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 = nuevo álbum ([Song1, Song2, Song3]); console.log (myalbum.models); // La salida es [Song1, Song2, Song3]