Modelo
Em relação à espinha com que a espinha dorsal, o mais básico é o modelo. Essa coisa é como o modelo de mapeamento de banco de dados no desenvolvimento de back-end. É também um modelo de objetos de dados e deve ter os mesmos atributos que o modelo no back-end (apenas atributos que precisam ser operados pelo front-end).
Vamos dar uma olhada no que é o modelo de backbone do exemplo passo a passo.
Primeiro defina uma página HTML:
<! Doctype html> <html> <head> <title> the5fire-backbone-model </ititle> </head> <body> </body> <script src = "http://ajax.googleapis.com/ajx/libs/jquery/1.4.4/jkery.minmin.inmin.inmin.iner.Int.Ir src = "http://ajax.cdnjs.com/ajax/libs/undercore.js/1.1.4/underscore-min.js"> </Script> <script src = "http://ajax.cdnjs.com/ajax/libs/undercore.js/1.1.4/underscore-min.js"> </Script> <script src = "http://ajax.cdnjs.com/ajax/libs/undercore.js/1.1.4/underscore-min.js"> </Script> <script src = "http://ajax.cdnjs.com/ajax/libs/backbone.js/0.3.3.3/backbone-min.js"> </script> <cript> (function ($) {/** ** ** code aqui **/}) (jQuery);O código a seguir precisa ser preenchido na função na tag de script deste HTML.
1. O objeto mais simples
Man = backbone.model.extend ({Initialize: function () {alert ('ei, você me cria!');}}); Var man = new Man;Isso é muito simples. Há também uma apresentação de modelo no Helloworld, sem definir atributos. Este é um método durante a inicialização, ou um construtor.
2. Dois métodos de atribuição de objetos
O primeiro é definir diretamente e definir o valor padrão.
Man = backbone.model.extend ({Initialize: function () {alert ('ei, você me cria!');}, Padrões: {name: 'zhang san', idade: '38'}}); var man = new Man; alert (man.get ('nome'););O segundo tipo é definido ao atribuir
Man = backbone.model.extend ({Initialize: function () {alert ('ei, você me cria!');}}); Man.set ({name: 'the5fire', idade: '10 '}); alert (man.get (' name '));Ao usar valores get, o get é usado.
3. Métodos no objeto
Man = backbone.model.extend ({Initialize: function () {alert ('ei, você me cria!');}, Padrões: {name: 'zhang san', idade: '38'}, aboutme: function () {return 'meu nome' + this.get ('name') + ', este Homem; alerta (man.aboutMe ());4. Ouça as mudanças nos atributos no objeto
Man = backbone.model.extend ({Initialize: function () {alert ('Ei, você me cria!'); // vincula a escuta durante a inicialização this.bind ("altere: nome", function () {var name = this.get ("nome"); alert ("você alterou o nome:" + name);}); }, AboutMe: function () {return 'meu nome é' + this.get ('nome') + ', este ano' + this.get ('idade') + 'ano'; var man = novo homem; man.set ({name: 'the5fire'}) // aciona o evento de alteração encadernado, alerta.5. Adicione regras de verificação aos avisos de objeto e erro
Man = backbone.model.extend ({Initialize: function () {alert ('ei, você me cria!'); // vincular a escuta durante a inicialização this.bind ("altere: nome", function () {var name = this.get ("name"); alert ("você alterou o atributo," + name);}); }); }}); var man = novo homem; man.set ({name: ''}); // De acordo com as regras de verificação, uma mensagem de erro aparece.6. A aquisição e armazenamento de objetos exigem que o suporte ao lado do servidor seja testado.
Primeiro, você precisa definir um atributo de URL para o objeto. Ao chamar o método Salvar, todos os atributos do objeto serão publicados no servidor.
Man = backbone.model.extend ({url: '/save/', Initialize: function () {alert ('Ei, você me cria!'); // vincula a escuta durante a inicialização this.bind ("alteração: name", function () {var name = this.get ("name"); alert ("você alterou o nome"), ") {var = this.get (" name "); alerta (erro); 'anos de idade';}}); var man = novo homem; //The POST will be sent to the url corresponding to the model, and the data format is json{"name":"the5fire","age":38}//Then then get the data from the server side using method fetch([options])var man1 = new Man;//In the first case, if the fetch method is used directly, it will send a get request to the url of your model, //You can perform corresponding operations by determining whether it is Obtenha ou poste no lado do servidor. man1.fetch (); // No segundo caso, adicione parâmetros a buscar, como segue: man1.fetch ({url: '/getmans/'}); // Dessa forma, uma solicitação GET será enviada para o URL/getMans/. // O estilo de resultado retornado pelo servidor deve ser os dados de formato JSON correspondentes, o mesmo que o formato da postagem ao salvar. /, No entanto, o método de aceitar os dados retornados pelo servidor é o seguinte: man1.fetch ({url: '/getmans/', success: function (model, resposta) {alert ('succcess'); // modelo é o que é o alerta de dados recuperado (model.get ('name');}}, e erro: function () {/) alerta ('erro');Nota: Os códigos acima são apenas códigos que podem ser executados normalmente, mas haverá instâncias sobre o lado do servidor posteriormente.
Deve -se acrescentar aqui que a operação assíncrona do servidor é concluída através do método Backbone.Sync. Ao chamar esse método, um parâmetro será aprovado automaticamente e a solicitação correspondente será enviada ao servidor de acordo com os parâmetros. Por exemplo, se você salvar e a espinha dorsal, determinará se o seu objeto é novo. Se for criado recentemente, o parâmetro será criado. Se for um objeto existente, ele só foi alterado, o parâmetro será atualizado. Se você chamar o método de busca, o parâmetro será lido. Se for destro, o parâmetro será excluído. Ou seja, o chamado Crud ("Criar", "Read", "Atualizar" ou "Excluir"), e os tipos de solicitação correspondentes a esses quatro parâmetros são post, obterem, coloque e excluem. Você pode fazer operações CRUD correspondentes no servidor com base nesse tipo de solicitação.
Observação:
Em relação ao URL e URLROOT, se você definir URL, seu CRUD enviará a solicitação correspondente a este URL. No entanto, outro problema é que a solicitação de exclusão é enviada, mas nenhum dado é enviado. Então você não sabe qual objeto (registro) deve ser excluído no lado do servidor. Então, aqui está outro conceito de urlroot. Depois de definir o URLROOT, ao enviar solicitações de put e excluir, o endereço da URL da solicitação é: /baseurl/ Ohmodel.id], para que você possa atualizar ou excluir o objeto correspondente (registro) extraindo os valores após o URL no lado do servidor.
Coleção
A coleção é uma coleção ordenada de objetos modelo. É muito simples entender o conceito. Se você olhar através de alguns exemplos, você achará mais simples.
1. Exemplos sobre livros e estantes de livros
Book = backbone.model.extend ({padrão: {// graças aos internautas por alterar a correção de energia azul para defaultStitle: 'padrão'}, inicialize: function () {// alert ('hey, você crie -me!');}}); Bookshelf = backbone.collection.Extend ({Model! ');}}; 'Book1'}); var book2 = novo livro ({title: 'book2'}); var book3 = novo livro ({title: 'book3'}); // var bookshelf = novo estante ([livro1, livro2, livro3]); // observe que é uma matriz ou use addvar estante = new bookshelf; estanteshelf.add (book1); bookshelf.add (book2); bookshelf.add (book3); bookshelf.remove (book3); // com base na biblioteca JS, que também pode usar cada método para obter os dados da biblioteca JS, que também pode usar cada método para obter o método para obter os dados da liberária JS, com base na biblioteca JS. Bookshelf.Each (function (livro) {alert (book.get ('title'));});Muito simples, sem explicação
2. Use buscar dados para obter dados do lado do servidor
Primeiro, você precisa definir o URL na estante acima. Observe que a propriedade URLROOT não existe na coleção. Ou você define diretamente o valor do URL no método de busca, como segue:
BookShelf.Fetch ({URL: '/getBooks/', Success: function (coleção, resposta) {collection.each (function (book) {alert (book.get ('title'));});}, erro: function () {alert ('error');}});Existem também dois métodos que aceitam valores de retorno. Eu acho que é fácil entender o significado específico. Se você retornar dados no formato correto, chamará o método de sucesso e o método de erro será chamado. Obviamente, o método de erro também depende da adição dos mesmos parâmetros formais que o método de sucesso.
O formato Retorno da estante correspondente é o seguinte: [{'title': 'book1'}, {'title': 'book2'} .....]
3. Método de redefinição
Quando esse método é usado, ele deve ser coordenado com a busca acima. Após a coleção buscar os dados, o método de redefinição será chamado, então você precisa definir o método de redefinição ou ligar o método de redefinição na coleção. Aqui está uma demonstração do uso de ligações:
BookShelf.Bind ('Reset', ShowallBooks); ShowallBooks = function () {BookShelf.Each (function (Book) {// Renderize os dados do livro na página.});}As etapas de ligação devem ser executadas antes da busca.
O código completo sobre a coleção é fornecido abaixo, que requer suporte ao lado do servidor. A construção do lado do servidor será escrita posteriormente.
<! Doctype html> <html> <head> <title> the5fire-backbone-collection </ititle> </weef> <body> </body> <script src = "http://ajax.googleapis.com/ajx/libs/jquery/1.4.4/jkery.minmin.iner.com/ajx/libs/jquery/1.4.4/jkery.minmin.iner.com/ajx/libs/jquery/1.4.4/jkery.minmin.iner.com/ajx/libs/jquery/1.4.4/jkery.minmin.iner.com/ajx/libs/jquery/1.4.4/jkery.minmin.iner.com/ajx/libs/jquery/1.4.4/jkery.minmin.iner.com/ src = "http://ajax.cdnjs.com/ajax/libs/undercore.js/1.1.4/underscore-min.js"> </Script> <script src = "http://ajax.cdnjs.com/ajax/libs/undercore.js/1.1.4/underscore-min.js"> </Script> <script src = "http://ajax.cdnjs.com/ajax/libs/undercore.js/1.1.4/underscore-min.js"> </Script> <script src = "http://ajax.cdnjs.com/ajax/libs/backbone.js/0.3.3/backbone-min.js"> </script> <cript> (function ($) {// coleção é uma coleção encomendada de modelos simples // 1. um exemplo simples = backbone.mm {// coleção é uma coleção encomendada de simples // 1. um exemplo simples = backbone.mmod.mod.mod.mod.mod.model.lft (backbonen. Blue Power Correction to Padrates Title: 'Padrão'}, Inicializar: functione () {// alerta (', você cria!'); : 'Book3'}); I <BookShelf.Models.Length; e use a redefinição para renderizar estantes de livros ('redefinir', ShowallBooks); BookShelf.Each (função (livro) {// renderiza os dados do livro na página.});