O que é um modelo
O autor de Backbone define o modelo da seguinte forma:
O modelo é o núcleo de qualquer aplicativo da Web, ele contém dados interativos e a maior parte da lógica. Por exemplo: conversão, verificação, atributos e permissões de acesso, etc.
Então, vamos primeiro criar um modelo:
Pessoa = backbone.model.extend ({Initialize: function () {alert ("Bem -vindo ao backbone!");}}); Var pessoa = nova pessoa;No código acima, definimos um modelo chamado pessoa e, após a instanciação, temos uma pessoa. Sempre que você instanciar um modelo, o método Initialize () será acionado automaticamente (esse princípio também se aplica à coleta, visualização). Obviamente, o método Initialize () não é obrigatório ao definir um modelo, mas, como você usa o backbone, você o achará indispensável.
Defina propriedades do modelo
Agora queremos passar alguns parâmetros ao criar uma instância de modelo para definir as propriedades do modelo:
Person = Backbone.model.extend ({Initialize: function () {alert ("Bem -vindo ao backbone!");}}); // Definir Var Pessoa = nova pessoa ({Nome: "StephenLee", idade: 22}); // também podemos definir var pessoa = nova pessoa () depois que o modelo é instanciado pelo set (). var pessoa = nova pessoa (); Person.set ({Nome: "Stephenlee", idade: 22});Obter propriedades do modelo
Usando o método get () de modelo, podemos obter as propriedades:
Pessoa = backbone.model.extend ({Initialize: function () {alert ("Bem -vindo ao backbone!");}}); Var pessoa = nova pessoa ({name: "stephenlee", idade: 22}); var idade = pessoa.get ("idade"); // 22Var Name = Person.get ("Nome"); // "Stephenlee"Definir Propriedades padrão do modelo
Às vezes, você deseja que o modelo inclua alguns valores de propriedade padrão ao instantá -lo, o que pode ser alcançado definindo a propriedade padrão do modelo:
Pessoa = backbone.model.extend ({padrão: {name: "lebronjames", idade: 30,}, inicialize: function () {alert ("Bem -vindo ao backbone!");}}}); Var pessoa = nova pessoa ({name: "Stephenlee"}); var idade = pessoa.get.get = Age "; // Como o valor da idade não é especificado durante a instanciação, o valor padrão é 30Var nome = Pessoa.get ("Nome"); // Se a instanciação definiu o valor do nome, é "Stephenlee"Use propriedades do modelo
Você pode personalizar métodos no modelo para usar as propriedades dentro do modelo. (Todos os métodos personalizados padrão para o público)
Person = Backbone.model.extend ({Padrões: {Nome: "LeBronjames", Idade: 30, Hobby: "Basketball"}, Inicialize: function () {alert ("Bem -vindo ao backbone!"); "Stephenlee", idade: 22}); pessoa.like ("coding"); // define o hobby de Stephenlee para codingvar hobby = pessoa.get ("hobby"); // "codificação"Ouça a mudança das propriedades do modelo
De acordo com o mecanismo de backbone, podemos ouvir qualquer atributo do modelo. Em seguida, tentamos vincular o atributo de um modelo no método Initialize () para ouvi -lo, tomando o nome do atributo como exemplo:
Pessoa = backbone.model.extend ({padrão: {name: "lebronjames", idade: 30,}, inicialize: function () {alert ("welcome to backbone!"); This.on ("alteração: name", function (model) {var = model.get ("name"); }}); var pessoa = nova pessoa (); var Age = Person.Set ({Nome: "Kobebryant"});Através do código acima, sabemos como ouvir uma determinada propriedade do modelo. Supondo que precisamos ouvir todas as propriedades do modelo, use 'this.on ("altere", function (model) {}); .
Interação de dados entre servidor e modelo
Como mencionado anteriormente, o modelo contém dados interativos, portanto, uma de suas funções é transportar dados transmitidos do servidor e interagir com o servidor. Agora, vamos supor que exista um usuário de tabela do MySQL no servidor, que possui três campos, nome e email. O lado do servidor usa o estilo REST para se comunicar com o front-end e usa o URL: /Usuário para interagir. Nosso modelo é definido como:
var userModel = backbone.model.extend ({urlroot: '/user', padrões: {name: '', email: ''}});Crie um modelo
Cada modelo no backbone possui um ID de propriedade, que corresponde aos dados do lado do servidor um por um. Se quisermos adicionar um novo registro ao usuário da tabela MySQL do lado do servidor, precisamos apenas instanciar um modelo e chamar o método save (). No momento, o ID do atributo da instância do modelo está vazio, o que significa que o modelo é criado recentemente, portanto, o backbone enviará uma solicitação post para o URL especificado.
var userModel = backbone.model.extend ({urlroot: '/user', padrões: {name: '', email: ''}}); var user = new userModel (); // observe que não definimos o atributo de identificação aqui var userDeTails = {name: 'StephenLee', stepheMeneeMeMleeMleeMeMleeMeMeMeMeMeMeMeMeMeMeM.. O modelo não possui um atributo de identificação, use o método salv () no momento. Backbone enviará uma solicitação de postagem para o lado do servidor. Depois de receber os dados, o servidor o armazena e retorna as informações que contêm o ID para o ModelUser.Save (UserDetails, {Success: function (User) {alert (user.tojson ());}})No momento, há um registro adicional na tabela de usuários do MySQL no servidor com o nome Stephenlee e o e -mail [email protected].
Obtenha um modelo
Acabamos de criar um modelo e o armazenamos no banco de dados do lado do servidor. Supondo que, ao criar o modelo, o valor do atributo de identificação retornado pelo lado do servidor é 1. Nesse momento, podemos recuperar os dados armazenados através do valor do ID. Quando inicializamos uma instância do modelo com o valor do atributo de identificação, através da operação Fetch (), o backbone enviará uma solicitação GET para o URL especificado.
var user = new UserModel ({id: 1}); // Especifique o valor do ID durante a inicialização // use o método fetch () para solicitar dados do usuário/1, e o lado do servidor retornará o registro completo do usuário, incluindo nome, email e outras informações usuárias.Fetch ({SUCCESS: function) {alert (user.Tojson ());Atualize um modelo
Se precisarmos modificar o registro do usuário armazenado, use o valor de ID conhecido e use o método SALVE (), mas como o ID não está vazio neste momento, o backbone enviará uma solicitação de put para o URL especificado.
var user = new UserModel ({id: 1, nome: 'stephenlee', e -mail: '[email protected]'}); // Especifique o valor de identificação ao instantar // porque o valor de identificação é especificado, use o método Salvar () neste momento. O backbone enviará uma solicitação de put para o usuário/1 e modificará o email do registro com o ID 1 no banco de dados User.Save ({email: '[email protected]'}, {success: function (model) {alert (user.tojson ());}});Exclua um modelo
Se precisarmos excluir registros no banco de dados, use o valor de ID conhecido e use Destroy (). Nesse ponto, a espinha dorsal enviará uma operação de exclusão para o URL especificado.
var user = new UserModel ({id: 1, nome: 'Stephenlee', e -mail: '[email protected]'}); // Especifique o valor de identificação ao instanciar // porque o valor de identificação é especificado, use o método () nesse horário, o backbone enviará um pedido para usuário para usuário/1. Depois de receber a solicitação, os dados com ID 1 serão excluídos no banco de dados User.Destroy ({success: function () {alert ('destruído');}});O que é coleção
Em resumo, a coleção em Backbone é uma coleção ordenada de modelos, por exemplo, pode ser usada nas seguintes situações:
Modelo: Aluno, Coleção: ClassStudentsModel: Todo Item, Coleção: TODO ListModel: Animal, Coleção: Zoológico
A coleção geralmente usa apenas o mesmo tipo de modelo, mas o modelo pode pertencer a diferentes tipos de coleta, como:
Modelo: Aluno, Coleção: Gym ClassModel: Student, Collection: Art ClassModel: Student, Coleção: aula de inglês
Criar uma coleção
// Definir modelo Songvar Song = backbone.model.extend ({padrão: {name: "não especificado", artista: "não especificado"}, inicialize: function () {console.log ("Model é a resposta"); = nova música ({Nome: "How Bizarre", Artist: "OMC"}); var Song1 = New Song ({Nome: "How Bizarre", Artist: "OMC"}); var Song2 = New Song ({Nome: "Nome Sexual", Artist: "Marvin gaye"}); = novo álbum ([Song1, Song2, Song3]); Console.log (Myalbum.models); // a saída é [Song1, Song2, Song3]