Backbone: Impossible de transmettre les attributs "data-" dans la méthode Attributes de View

Créé le 3 oct. 2012  ·  8Commentaires  ·  Source: jashkenas/backbone

Je suis fan de la définition d'attributs dans une vue en tant que telle...

Backbone.View.extend({
 les attributs: {
 data-attr: 'mesdonnées'
 }
 });

... cependant, cela génère une erreur en raison du trait d'union dans la clé "data-attr".

Uncaught SyntaxError : jeton inattendu -
Je me rends compte qu'il s'agit d'un jeton illégal dans un objet clé-valeur JavaScript, mais j'espérais que Backbone propose une solution de contournement, étant donné que la transmission d'attributs de données est l'un des scénarios les plus probables. J'ai contourné cela en définissant l'attribut dans la fonction de rendu à l'aide de jQuery :
rendu : fonction () {
 this.$el.attr( 'data-attr', 'mydata"');
 }

Cela fonctionne, mais j'ai pensé à demander s'il y avait une autre option.

question

Commentaire le plus utile

Vous pouvez utiliser une fonction comme ceci :

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

Tous les 8 commentaires

Oui, c'est juste un objet JavaScript. Utilisez des clés citées.

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

Ahh, je pensais avoir essayé ça ! Merci!

Que suggérez-vous pour transmettre un attribut de données à l'élément DOM de la vue à partir des attributs du modèle de la vue ? En tant que tel...

 les attributs: {
 "data-attr": this.model.foo
 }

Je perds la possibilité de faire référence à "ceci".

 Uncaught TypeError : impossible de lire la propriété 'modèle' d'undefined 

Vous pouvez utiliser une fonction comme ceci :

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

Impressionnant. Cela fonctionne parfaitement. Merci pour les réponses rapides !

Vous êtes les bienvenus, mais à l'avenir, veuillez ne pas utiliser les tickets de bogue pour le support technique comme celui-ci -- essayez d'abord le canal IRC ou la liste de diffusion.

Heureux de. J'ai essayé cela en premier, mais il n'y a qu'un seul autre utilisateur dans DocumentCloud IRC, Turjakas qui ne répondait pas.

J'ai dû mal taper -- il y a 242 personnes dans #documentcloud sur freenode en ce moment.

Cette page vous a été utile?
0 / 5 - 0 notes