Backbone: Невозможно передать атрибуты data- в методе View Attributes.

Созданный на 3 окт. 2012  ·  8Комментарии  ·  Источник: jashkenas/backbone

Я фанат установки атрибутов в представлении как таковом ...

Backbone.View.extend ({
 атрибуты: {
 data-attr: 'mydata'
 }
 });

... однако это вызывает ошибку из-за дефиса в ключе data-attr.

Uncaught SyntaxError: Неожиданный токен -
Я понимаю, что это недопустимый токен в объекте «ключ-значение» JavaScript, однако я надеялся, что Backbone предложит некоторые решения для этого, учитывая тот факт, что передача атрибутов данных является одним из наиболее вероятных сценариев. Я работал над этим, устанавливая атрибут в функции рендеринга с помощью jQuery:
render: function () {
 this. $ el.attr ('data-attr', 'mydata "');
 }

Это работает, но я подумал спросить, есть ли другой вариант.

question

Самый полезный комментарий

Вы можете использовать такую ​​функцию:

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

Все 8 Комментарий

Ага - это просто объект JavaScript. Используйте ключи в кавычках.

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

Ах, я думал, что пробовал! Спасибо!

Что вы предлагаете для передачи атрибута данных в элемент DOM представления из атрибутов в модели представления? Как таковой...

 атрибуты: {
 "data-attr": this.model.foo
 }

Я теряю возможность ссылаться на «это».

 Uncaught TypeError: невозможно прочитать модель свойства undefined 

Вы можете использовать такую ​​функцию:

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

Потрясающие. Это прекрасно работает. Спасибо за оперативные ответы!

Добро пожаловать, но в будущем, пожалуйста, не используйте тикеты об ошибках для подобной технической поддержки - сначала попробуйте канал IRC или список рассылки.

Счастлив. Я попробовал это первым, но в DocumentCloud IRC есть только один пользователь, Turjakas, который не отвечает.

Должно быть, опечатка - сейчас 242 человека в #documentcloud на freenode.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги