Backbone: Não é possível passar os atributos "dados-" no método de atributos da visualização

Criado em 3 out. 2012  ·  8Comentários  ·  Fonte: jashkenas/backbone

Eu sou um fã de definir atributos dentro de uma visão como tal ...

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

... no entanto, isso gera um erro devido ao hífen na chave "data-attr".

SyntaxError não capturado: token inesperado -
Sei que esse é um token ilegal em um objeto de valor-chave JavaScript, mas esperava que o Backbone oferecesse alguma solução para isso, visto que a transmissão de atributos de dados é um dos cenários mais prováveis. Tenho trabalhado em torno disso definindo o atributo dentro da função de renderização usando jQuery:
render: function () {
 this. $ el.attr ('data-attr', 'mydata "');
 }

Isso funciona, mas pensei em perguntar se há outra opção.

question

Comentários muito úteis

Você pode usar uma função como esta:

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

Todos 8 comentários

Sim - é apenas um objeto JavaScript. Use as chaves entre aspas.

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

Ahh, pensei ter tentado isso! Obrigado!

O que você sugere para passar um atributo de dados para o elemento DOM da View a partir dos atributos dentro do Model da View? Como tal...

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

Estou perdendo espaço para referência a "isso".

 TypeError não capturado: Não é possível ler a propriedade 'modelo' de indefinido 

Você pode usar uma função como esta:

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

Incrível. Isso funciona perfeitamente. Obrigado pelas respostas rápidas!

Você é bem-vindo, mas no futuro, por favor, não use os tíquetes de bug para suporte técnico como este - tente o canal IRC ou a lista de discussão primeiro.

Feliz por. Eu tentei isso primeiro, mas há apenas um outro usuário no DocumentCloud IRC, Turjakas, que não estava respondendo.

Deve ter digitado incorretamente - há 242 pessoas no #documentcloud no freenode no momento.

Esta página foi útil?
0 / 5 - 0 avaliações