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?

War es hilfreich?

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
  });
}
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top