Backbone: "data-"-Attribute können nicht innerhalb der Attributes-Methode von View übergeben werden

Erstellt am 3. Okt. 2012  ·  8Kommentare  ·  Quelle: jashkenas/backbone

Ich bin ein Fan davon, Attribute innerhalb einer Ansicht als solche festzulegen...

Backbone.View.extend({
 Attribute: {
 data-attr: 'mydata'
 }
 });

... dies wirft jedoch aufgrund des Bindestrichs im Schlüssel "data-attr" einen Fehler aus.

Nicht abgefangener SyntaxError: Unerwartetes Token -
Mir ist klar, dass dies ein illegales Token in einem JavaScript-Schlüsselwertobjekt ist, aber ich hatte gehofft, dass Backbone dafür etwas Abhilfe bietet, da die Übergabe von Datenattributen eines der wahrscheinlichsten Szenarien ist. Ich habe es umgangen, indem ich das Attribut innerhalb der Render-Funktion mit jQuery festgelegt habe:
rendern: Funktion () {
 this.$el.attr( 'data-attr', 'mydata'');
 }

Dies funktioniert, aber ich dachte, zu fragen, ob es eine andere Option gibt.

question

Hilfreichster Kommentar

Sie können eine Funktion wie diese verwenden:

attributes: function() {
  return {
    'data-attr': this.model.foo
  };
}

Alle 8 Kommentare

Ja, es ist nur ein JavaScript-Objekt. Verwenden Sie zitierte Schlüssel.

attributes: {
    "data-attr": "mydata"
}

Ahh, ich dachte, ich hätte es versucht! Vielen Dank!

Was schlagen Sie vor, um ein Datenattribut aus den Attributen im Modell der Ansicht an das DOM-Element der Ansicht zu übergeben? Als solche...

 Attribute: {
 "data-attr": this.model.foo
 }

Ich verliere den Spielraum für Verweise auf "dieses".

 Uncaught TypeError: Eigenschaft 'Modell' von undefined kann nicht gelesen werden 

Sie können eine Funktion wie diese verwenden:

attributes: function() {
  return {
    'data-attr': this.model.foo
  };
}

Fantastisch. Das funktioniert perfekt. Vielen Dank für die prompten Antworten!

Gern geschehen, aber bitte verwenden Sie in Zukunft keine Bug-Tickets für den technischen Support wie diese – versuchen Sie es zuerst über den IRC-Kanal oder die Mailingliste.

Gerne. Ich habe das zuerst versucht, aber es gibt nur einen anderen Benutzer in DocumentCloud IRC, Turjakas, der nicht reagiert hat.

Muss sich vertippt haben – es gibt derzeit 242 Leute in #documentcloud auf Freenode.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen