تحديد النماذج التي تم إنشاؤها ديناميكيًا ضمن المجموعة
-
12-12-2019 - |
سؤال
لدي مجموعة من مدخلات "اسم الشخص" مع الفصل person
الذي أحاول القيام بما يلي مع:في كل مرة يتم فيها تسجيل عملية مفتاح في الإدخال، احصل على سمة تجزئة البيانات الخاصة بهذا الإدخال، وإذا لم يكن هناك بالفعل مثيل لشخص لديه هذا التجزئة في مجموعة الأشخاص، فأضف نموذجًا.وإلا فما عليك سوى تحديث النموذج الذي تتطابق فيه التجزئة.
$('.person').keyup(function(){
var myHash = $(this).attr('data-hash'),
myName = $(this).val(),
checkMe = people.where({'hash':myHash});
if ( checkMe.length > 0 ){
//update name value where hash matches
}
else {
people.add({
'name':myName,
'hash':myHash
});
}
});
بدلا من استخدام var person = new Person
أقوم بإضافة هذه النماذج إلى المجموعة باستخدام Backbone's add
طريقة.
لدي الآن عدد من العناصر عندما أتصل people.models
لكن لا يمكنني معرفة كيفية اختيارهم.عادة كنت أقول person.get('attribute')
لكنني لست متأكدًا من كيفية اختيار النموذج إذا لم يكن به أي شيء var
اسم.ما الذي يمكنني وضعه في الكود بدلاً من //update name value where hash matches
?
المحلول
يجب أن يكون checkMe عبارة عن مجموعة من النماذج التي تحاول تحديثها.كرر من خلالها واستخدم الطريقة المحددة:
$('.person').keyup(function(){
var myHash = $(this).attr('data-hash'),
myName = $(this).val(),
checkMe = people.where({'hash':myHash});
if ( checkMe.length > 0 ){
_.each(checkMe, function(person){
person.set({
'name':myName,
});
});
}
else {
people.add({
'name':myName,
'hash':myHash
});
}
});