Auswahl dynamisch erstellter Modelle innerhalb einer Sammlung
-
12-12-2019 - |
Frage
Ich habe eine Reihe von „Personennamen“-Eingaben mit der Klasse person
dass ich Folgendes versuche:Jedes Mal, wenn ein Keyup in der Eingabe aufgezeichnet wird, greifen Sie auf das data-hash-Attribut dieser Eingabe zu, und wenn es nicht bereits eine Instanz von Person mit diesem Hash in der Sammlung „People“ gibt, fügen Sie ein Modell hinzu.Andernfalls aktualisieren Sie einfach das Modell, bei dem der Hash übereinstimmt.
$('.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
});
}
});
Anstatt zu verwenden var person = new Person
Ich füge diese Modelle mithilfe von Backbones zur Sammlung hinzu add
Methode.
Jetzt habe ich also eine Reihe von Elementen, wenn ich anrufe people.models
aber ich kann nicht herausfinden, wie ich sie auswählen soll.Normalerweise würde man sagen person.get('attribute')
aber ich bin mir nicht sicher, wie ich das Modell auswählen soll, wenn es nein hat var
Name.Was könnte ich stattdessen in den Code einfügen? //update name value where hash matches
?
Lösung
checkMe sollte eine Reihe von Modellen sein, die Sie aktualisieren möchten.Durchlaufen Sie sie und verwenden Sie die Set-Methode:
$('.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
});
}
});