تحديد النماذج التي تم إنشاؤها ديناميكيًا ضمن المجموعة

StackOverflow https://stackoverflow.com//questions/12679994

سؤال

لدي مجموعة من مدخلات "اسم الشخص" مع الفصل 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
  });
}
});
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top