Apa itu model
Penulis Backbone mendefinisikan model sebagai berikut:
Model adalah inti dari aplikasi web apa pun, berisi data interaktif dan sebagian besar logika. Misalnya: konversi, verifikasi, atribut dan izin akses, dll.
Jadi, mari pertama kali membuat model:
Orang = backbone.model.extend ({initialize: function () {alert ("Selamat datang ke backbone!");}}); Var Person = orang baru;Dalam kode di atas, kami mendefinisikan model bernama orang, dan setelah instantiasi, kami mendapatkan seseorang. Setiap kali Anda membuat model, metode initialize () akan dipicu secara otomatis (prinsip ini juga berlaku untuk pengumpulan, tampilan). Tentu saja, metode initialize () tidak wajib saat mendefinisikan model, tetapi saat Anda menggunakan tulang punggung, Anda akan merasa sangat diperlukan.
Atur properti model
Sekarang kami ingin melewati beberapa parameter saat membuat contoh model untuk mengatur properti model:
Orang = backbone.model.extend ({initialize: function () {alert ("Selamat datang ke backbone!");}}); // atur var person = orang baru ({name: "Stephenlee", usia: 22}); // kita juga dapat mengatur var person = orang baru () setelah model ditetapkan oleh set (). var orang = orang baru (); person.set ({name: "Stephenlee", usia: 22});Dapatkan properti model
Menggunakan metode model get (), kita bisa mendapatkan properti:
Orang = backbone.model.extend ({initialize: function () {alert ("Selamat datang ke backbone!");}}); Var orang = orang baru ({name: "stephenlee", usia: 22}); var usia = person.get ("usia"); // 22var name = person.get ("name"); // "Stephenlee"Atur Model Properti Default
Terkadang Anda ingin model memasukkan beberapa nilai properti default saat instantiating, yang dapat dicapai dengan mendefinisikan properti default dari model:
Orang = backbone.model.extend ({defaults: {name: "lebronjames", usia: 30,}, inisialisasi: function () {waspada ke backbone! ");}}); Var person = orang baru ({name:" stephenlee "}); var usia = var person = usia (" usia "" // Karena nilai usia tidak ditentukan selama instantiasi, nilai standarnya adalah 30var name = person.get ("name"); // Jika instantiasi telah menetapkan nilai nama, itu adalah "Stephenlee"Gunakan properti model
Anda dapat menyesuaikan metode dalam model untuk menggunakan properti dalam model. (Semua metode kustom default untuk umum)
Person = backbone.model.extend ({defaults: {name: "lebronjames", usia: 30, hobi: "bola basket"}, inisialisasi: function () {alert ("Welcome to backbone!");}, Like: function (hobbyname) {this.set ({{hobby: {hobbyname) (hobbyname) {this.set ({{hobby: hobbyName {{{{{{{{hobby name {{{hobbyname) (hobbyname); "Stephenlee", usia: 22}); orang. // "coding"Dengarkan Perubahan Properti Model
Menurut mekanisme backbone, kita dapat mendengarkan atribut model apa pun. Selanjutnya, kami mencoba mengikat atribut model dalam metode initialize () untuk mendengarkannya, mengambil nama atribut sebagai contoh:
Orang = backbone.model.extend ({defaults: {name: "lebronjames", usia: 30,}, inisialisasi: function () {alert ("Welcome to backbone!"); This.on ("ubah: name) (model) {var name = model.get (" name "); // 'name"; var orang = orang baru (); var age = person.set ({name: "kobebryant"});Melalui kode di atas, kita tahu cara mendengarkan properti model tertentu. Dengan asumsi kita perlu mendengarkan semua properti model, gunakan 'this.on ("ubah", function (model) {}); .
Interaksi data antara server dan model
Seperti yang disebutkan sebelumnya, model berisi data interaktif, jadi salah satu fungsinya adalah membawa data yang dikirimkan dari server dan berinteraksi dengan server. Sekarang mari kita asumsikan bahwa ada pengguna tabel MySQL di server, yang memiliki tiga bidang ID, nama, dan email. Sisi server menggunakan gaya istirahat untuk berkomunikasi dengan front-end dan menggunakan URL: /pengguna untuk berinteraksi. Model kami didefinisikan sebagai:
var usermodel = backbone.model.extend ({urlroot: '/user', default: {name: '', email: ''}});Buat model
Setiap model di Backbone memiliki ID properti, yang sesuai dengan data sisi server satu per satu. Jika kami ingin menambahkan catatan baru ke pengguna tabel MySQL sisi server, kami hanya perlu membuat model dan memanggil metode simpan (). Pada saat ini, ID atribut dari contoh model kosong, yang berarti bahwa model tersebut baru dibuat, sehingga Backbone akan mengirim permintaan pos ke URL yang ditentukan.
var usermodel = backbone.model.extend ({urlroot: '/user', default: {name: '', email: ''}}); var user = new usermodel (); // perhatikan bahwa kita tidak menentukan atribut id di sini var userdetails = {name: 'stephene', oMage ', {name lephen. Model tidak memiliki atribut ID, gunakan metode save () saat ini. Backbone akan mengirim permintaan pos ke sisi server. Setelah menerima data, sisi server menyimpannya dan mengembalikan informasi yang berisi ID ke ModelUser.save (userDetails, {Success: function (user) {alert (user.toJson ());}}))Pada saat ini, ada catatan tambahan di tabel pengguna MySQL di server dengan nama Stephenlee dan email [email protected].
Dapatkan model
Kami baru saja membuat model dan menyimpannya di database sisi server. Dengan asumsi bahwa saat membuat model, nilai atribut ID yang dikembalikan oleh sisi server adalah 1. Pada saat ini, kita dapat mengambil data yang disimpan melalui nilai ID. Ketika kami menginisialisasi contoh model dengan nilai atribut ID, melalui operasi fetch (), Backbone akan mengirim permintaan GET ke URL yang ditentukan.
var user = new usermodel ({id: 1}); // Tentukan nilai id selama inisialisasi // gunakan metode fetch () untuk meminta data dari pengguna/1, dan sisi server akan mengembalikan catatan pengguna lengkap, termasuk nama, email dan informasi lainnya.Perbarui model
Jika kita perlu memodifikasi catatan pengguna yang disimpan, gunakan nilai ID yang diketahui dan gunakan metode Simpan (), tetapi karena ID tidak kosong saat ini, Backbone akan mengirim permintaan put ke URL yang ditentukan.
var user = new usermodel ({id: 1, name: 'stephenlee', email: '[email protected]'}); // Tentukan nilai ID saat instantiateasi // karena nilai ID ditentukan, gunakan metode simpan () saat ini. Backbone akan mengirim permintaan put ke pengguna/1, dan akan memodifikasi email catatan dengan ID 1 di database user.save ({email: '[email protected]'}, {Success: function (model) {waspada (user.tojson ());}});Hapus model
Jika kita perlu menghapus catatan dalam database, gunakan nilai ID yang diketahui dan gunakan metode Destroy (). Pada titik ini, Backbone akan mengirim operasi hapus ke URL yang ditentukan.
var user = new usermodel ({id: 1, name: 'stephenlee', email: '[email protected]'}); // Tentukan nilai ID saat instanti sekian // Karena nilai ID ditentukan, gunakan metode Destroy () saat ini, Backbone akan mengirim permintaan hapus ke pengguna/1. Setelah menerima permintaan, data dengan ID 1 akan dihapus di basis data user.destroy ({success: function () {waspada ('dihancurkan');}});Apa itu koleksi
Singkatnya, koleksi di Backbone adalah kumpulan model yang dipesan, misalnya, dapat digunakan dalam situasi berikut:
Model: Siswa, Koleksi: ClassStudentsModel: TODO ITEM, KOLEKSI: TODO LISTMODEL: Hewan, Koleksi: Zoo
Koleksi umumnya hanya menggunakan jenis model yang sama, tetapi model dapat termasuk berbagai jenis koleksi, seperti:
Model: Siswa, Koleksi: Gym Classmodel: Siswa, Koleksi: Seni Kelas Model: Siswa, Koleksi: Kelas Bahasa Inggris
Buat koleksi
// Tentukan model songvar song = backbone.model.extend ({defaults: {name: "not specified", artist: "not spesifik"}, initialize: function () {console.log ("musik is the long ({nong1); {{{{{{{longvar album {{{{non -long1); = 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 = album baru ([Song1, Song2, Song3]); Console.log (myalbum.models); // Outputnya adalah [Song1, Song2, Song3]