Я использую JavaScript-код в шаблоне скорости, и он не работает!
Я читаю содержимое с помощью этого шаблона и хочу установить для него переменную js, но в содержимом есть разрывы строк, и я получаю следующую ошибку:
SyntaxError: незавершенный строковый литерал
В отрендеренном коде вы видите ошибку:
var exampleText = 'This is the first line
and this is the second line.';
В исходном коде это написано так:
var exampleText = '$question.answer.data';
var regularPanels = new A.Panel( {
bodyContent: exampleText,
collapsible: true,
collapsed: true,
headerContent: '$question.data' } ) .render('#regularPanels$counter$reserved-article-id.data$randomNamespace');
});
Есть ли возможность игнорировать разрыв строки для js-компиляции, но все же показывать его на полной отображаемой странице?
Хорошо, я решил это с помощью EscapeTool от Velocity.
В сочетании с ответом от emiliocai отлично работает следующий код:
<div id="example-text" style="display:none;">
<p>$escapeTool.java($question.answer.data).replace("\n","<br />")</p>
</div>
<script type="text/javascript" charset="utf-8">
AUI().ready('aui-panel', function(A) {
var exampleText = document.getElementById('example-text').innerHTML;
var regularPanels = new A.Panel( {
bodyContent: exampleText,
collapsible: true,
collapsed: true,
headerContent: '$question.data' } ) .render('#regularPanels$counter$reserved-article-id.data$randomNamespace');
});
</script>
Возможно, что это сработает и без скрытого <div>
-тега, но я еще не проверял.
Так же возможно было бы:
var exampleText = '$escapeTool.java($question.answer.data).replace("\n","<br />")';
Проверил -> работает!