Используйте атрибуты со странными символами в шаблоне Marionette / underscore

У меня есть модель с именами атрибутов, такими как @id, @type и т. д.

Если я попытаюсь использовать <%= @id %> в шаблоне Marionette.ItemView (с подчеркиванием), я получу

Uncaught SyntaxError: неожиданный токен ILLEGAL

Использование синтаксиса ['@id'] не дает ожидаемого результата.

Должен ли я переопределять функцию serializeData?

Спасибо


person Fabrizio Fortino    schedule 27.10.2012    source источник


Ответы (1)


Для шаблонов подчеркивания требуются выражения JavaScript внутри <%= ... %>, скомпилированный шаблон использует with поэтому вы обычно можете ссылаться на свойства объекта, как если бы они были переменными. Ваша проблема в том, что @id не является допустимым выражением JavaScript.

Так что да, предоставьте свой собственный serializeData для удаления @s, вероятно, ваш лучший выбор. Другой вариант — использовать параметр variable с _.template:

По умолчанию шаблон помещает значения из ваших данных в локальную область с помощью оператора with. Однако вы можете указать одно имя переменной с помощью параметра variable. Это может значительно повысить скорость рендеринга шаблона.

_.template("Using 'with': <%= data.answer %>", {answer: 'no'}, {variable: 'data'});
=> "Using 'with': no"

Затем вы можете использовать такие вещи, как <%= data['@id'] %>; проблема в том, что заставить этот подход работать с Marionette может быть сложнее, чем просто очистить @ в пользовательском методе serializeData.

person mu is too short    schedule 27.10.2012