ما هو النموذج
يحدد مؤلف العمود الفقري النموذج على النحو التالي:
النموذج هو جوهر أي تطبيق ويب ، ويحتوي على بيانات تفاعلية ومعظم المنطق. على سبيل المثال: التحويل والتحقق والسمات وأذونات الوصول ، إلخ.
لذلك ، دعونا أولاً ننشئ نموذجًا:
person = backbone.model.extend ({initialize: function () {Alert ("مرحبًا بك في العمود الفقري!") ؛}}) ؛ var person = new شخص ؛في الكود أعلاه ، نحدد نموذجًا يدعى الشخص ، وبعد الاستئصال ، نحصل على شخص. في أي وقت تقوم فيه بتثبيت نموذج ، سيتم تشغيل طريقة التهيئة () تلقائيًا (ينطبق هذا المبدأ أيضًا على التجميع ، العرض). بالطبع ، فإن طريقة التهيئة () ليست إلزامية عند تحديد نموذج ، ولكن أثناء استخدامك للعمود الفقري ، ستجدها لا غنى عنها.
تعيين خصائص النموذج
الآن نريد تمرير بعض المعلمات عند إنشاء مثيل نموذج لتعيين خصائص النموذج:
person = backbone.model.extend ({{initialize: function () {Alert ("مرحبًا بك في العمود الفقري!") ؛}) ؛ // set var person = new شخص ({name: "stephenlee" ، العمر: 22}) ؛ var person = شخص جديد () ؛ person.set ({name: "Stephenlee" ، العمر: 22}) ؛الحصول على خصائص النموذج
باستخدام طريقة GET () للنموذج ، يمكننا الحصول على الخصائص:
person = backbone.model.extend ({initialize: function () {Alert ("مرحبًا بك في العمود الفقري!") ؛}}) ؛ var person = شخص جديد ({name: "stephenlee" ، العمر: 22}) ؛ var age = person.get ("Age") ؛ // 22var name = person.get ("name") ؛ // "ستيفنلي"تعيين خصائص النموذج الافتراضي
في بعض الأحيان ، تريد أن يتضمن النموذج بعض قيم الخصائص الافتراضية عند إنشاء مثيل له ، والتي يمكن تحقيقها من خلال تحديد خاصية الافتراضات للنموذج:
person = backbone.model.extend ({defaults: {name: "lebronjames" ، العمر: 30 ،} ، initialize: function () {Alert ("مرحبًا بك في العمود الفقري!") ؛}}) ؛ var person = new person ({name: // لأن القيمة العمرية غير محددة أثناء التثبيت ، فإن القيمة الافتراضية هي 30VAR name = person.get ("name") ؛ // إذا كان مثيله قد حدد قيمة الاسم ، فهو "Stephenlee"استخدام خصائص النموذج
يمكنك تخصيص الطرق في النموذج لاستخدام الخصائص داخل النموذج. (جميع الطرق المخصصة الافتراضية للجمهور)
person = backbone.model.extend ({الافتراضات: {name: "LeBronJames" ، العمر: 30 ، هواية: "كرة السلة"} ، تهيئة: function () {Alert ("مرحبًا بك في العمود الفقري!) ؛} ، مثل: function (hobbyname) {this.set ({hobby: hobby}) "ستيفنلي" ، العمر: 22}) ؛ person.like ("الترميز") ؛ // تعيين هواية Stephenlee إلى Codingvar Hobby = person.get ("Hobby") ؛ // "الترميز"استمع إلى تغيير خصائص النموذج
وفقًا لآلية العمود الفقري ، يمكننا الاستماع إلى أي سمة للنموذج. بعد ذلك ، نحاول ربط سمة نموذج في طريقة التهيئة () للاستماع إليها ، مع أخذ اسم السمة كمثال:
person = backbone.model.extend ({defaults: {name: "lebronjames" ، العمر: 30 ،} ، initialize: function () {alert ("مرحبًا بك في العمود الفقري!") }}) ؛ var person = شخص جديد () ؛ var age = person.set ({name: "kobebryant"}) ؛من خلال الكود أعلاه ، نعرف كيفية الاستماع إلى خاصية معينة من النموذج. على افتراض أننا بحاجة إلى الاستماع إلى جميع خصائص النموذج ، استخدم 'this.on ("change" ، function (model) {}) ؛ .
تفاعل البيانات بين الخادم والنموذج
كما ذكرنا سابقًا ، يحتوي النموذج على بيانات تفاعلية ، لذلك تتمثل إحدى وظائفه في نقل البيانات المنقولة من الخادم والتفاعل مع الخادم. الآن ، لنفترض أن هناك مستخدمًا لجدول MySQL على الخادم ، والذي يحتوي على ثلاثة حقول معرف واسمها والبريد الإلكتروني. يستخدم جانب الخادم نمط الراحة للتواصل مع الواجهة الأمامية ويستخدم عنوان URL: /المستخدم للتفاعل. يتم تعريف نموذجنا على النحو التالي:
var usermodel = backbone.model.extend ({urlroot: '/user' ، defaults: {name: '، email:' '}}) ؛إنشاء نموذج
يحتوي كل نموذج في العمود الفقري على معرف الخاصية ، والذي يتوافق مع البيانات من جانب الخادم واحدًا تلو الآخر. إذا أردنا إضافة سجل جديد إلى مستخدم جدول MySQL من جانب الخادم ، فنحن بحاجة فقط إلى إنشاء إنشاء نموذج والاتصال بالطريقة Save (). في هذا الوقت ، يكون معرف السمة لمثيل النموذج فارغًا ، مما يعني أن النموذج يتم إنشاؤه حديثًا ، لذلك سيرسل العمود الفقري طلبًا آخر إلى عنوان URL المحدد.
var usermodel = backbone.model.extend ({urlroot: '/user' ، الافتراضيات: {name: '، البريد الإلكتروني:' '}}) ؛ var user = new UserModel () ؛ لا يحتوي النموذج على سمة معرف ، استخدم طريقة Save () في هذا الوقت. سيرسل العمود الفقري طلبًا منشورًا إلى جانب الخادم. بعد استلام البيانات ، يقوم جانب الخادم بتخزينها ويعيد المعلومات التي تحتوي على المعرف إلى ModelUser.save (userDetails ، {success: function (user) {Alert (user.tojson ()) ؛}})في هذا الوقت ، يوجد سجل إضافي في جدول المستخدم لـ MySQL على الخادم باسم Stephenlee والبريد الإلكتروني [email protected].
احصل على نموذج
لقد أنشأنا للتو نموذجًا وقمنا بتخزينه في قاعدة بيانات جانب الخادم. على افتراض أنه عند إنشاء النموذج ، فإن قيمة سمة المعرف التي يتم إرجاعها من جانب الخادم هي 1. في هذا الوقت ، يمكننا استرداد البيانات المخزنة من خلال قيمة المعرف. عندما نهيئة مثيل نموذج مع قيمة سمة المعرف ، من خلال عملية FETCH () ، سيرسل العمود الفقري طلب الحصول على عنوان URL المحدد.
var user = new usermodel ({{id: 1}) ؛ // حدد قيمة المعرف أثناء التهيئة // استخدم طريقة fetch () لطلب البيانات من المستخدم/1 ، وسيقوم جانب الخادم بإرجاع سجل المستخدم الكامل ، بما في ذلك الاسم والبريد الإلكتروني وغيرها من المعلومات user.fetch (تحديث نموذج
إذا احتجنا إلى تعديل سجل المستخدم المخزن ، فاستخدم قيمة المعرف المعروفة واستخدم طريقة Save () ، ولكن نظرًا لأن المعرف ليس فارغًا في هذا الوقت ، فإن العمود الفقري سيرسل طلبًا إلى عنوان URL المحدد.
var user = new usermodel ({id: 1 ، الاسم: 'Stephenlee' ، البريد الإلكتروني: '[email protected]'}) ؛ // حدد قيمة المعرف عند إنشاء مثيله // لأن قيمة المعرف محددة ، استخدم طريقة Save () في هذا الوقت. سيقوم Backbone بإرسال طلب PUT إلى user/1 ، وسيقوم بتعديل البريد الإلكتروني للسجل مع المعرف 1 في قاعدة البيانات user.save ({البريد الإلكتروني: '[email protected]'} ، {success: function (model) {Alert (user.tojson ()) ؛}}) ؛حذف نموذج
إذا كنا بحاجة إلى حذف السجلات في قاعدة البيانات ، فاستخدم قيمة المعرف المعروفة واستخدم طريقة تدمير (). في هذه المرحلة ، سيرسل العمود الفقري عملية حذف إلى عنوان URL المحدد.
var user = new usermodel ({id: 1 ، الاسم: 'Stephenlee' ، البريد الإلكتروني: '[email protected]'}) ؛ // حدد قيمة المعرف عند إنشاء instantiating // لأن قيمة المعرف محددة ، استخدم طريقة التدمير () في هذا الوقت ، سوف يرسل العمود الفقري طلب حذف/1. بعد تلقي الطلب ، سيتم حذف البيانات مع المعرف 1 في قاعدة البيانات user.destroy ({success: function () {Alert ('Destroyed') ؛}}) ؛ما هي المجموعة
باختصار ، فإن المجموعة في العمود الفقري عبارة عن مجموعة مرتبة من النماذج ، على سبيل المثال ، يمكن استخدامها في المواقف التالية:
النموذج: الطالب ، المجموعة: ClassStudentsModel: TODO ITEM ، المجموعة: TODO LISTMODEL: Animal ، Collection: Zoo
يستخدم المجموعة عمومًا نفس النوع فقط من النموذج ، ولكن يمكن أن ينتمي النموذج إلى أنواع مختلفة من التجميع ، مثل:
النموذج: طالب ، مجموعة: الصالة الرياضية ، نموذج الصالة: الطالب ، المجموعة: Art Classmroled: طالب ، مجموعة: الفصل الإنجليزية
إنشاء مجموعة
// تحديد نموذج songvar song = backbone.model.extend ({defaults: {name: "غير محدد" ، الفنان: "غير محدد" ، تهيئة: function () {console.log ("music is the ress") ؛}}) ؛ = أغنية جديدة ({name: "How Bizarre" ، الفنان: "OMC"}) ؛ var song1 = new song ({name: "how bizarre" ، الفنان: "omc"}) ؛ var song2 = new song ({name: "sexal learing" ، asser: MyAlbum = ألبوم جديد ([Song1 ، Song2 ، Song3]) ؛ console.log (myalbum.models) ؛ // الإخراج هو [Song1 ، Song2 ، Song3]