Мне нужно сохранить переменную «colcounter» внутри цикла, которая будет использоваться для заполнения шаблона jsrender.определить переменную внутри шаблона jsrender
Вот мой код шаблона
<script id="datascapeTemplate" type="text/x-jsrender">
<div id="dsViewport">
<div class="ds-column" style="width:{{:(name.length*100)}}px;">
<h1 id="datascapeName">{{:name}}</h1>
<div><span id="dsToggle">toggle</span></div>
</div>
{{=colcounter}}
{{for sections}}
<div class="ds-section">
<h3>{{:label}}</h3>
<div class="ds-column" id="start">
{{for items}}
{{* if (colcounter > 4){
colcounter = 1;
}}
</div>
<div class="ds-column" id="start">
{{* } }}
{{*
if (data.selected || datascape.showInvisible) { }}
<div class="ds-item {{* if (data.featured){ }} nowActive {{*} }} {{* if (data.active){ }} nowActiveRed {{*} }}" background="{{:background}}" bgcolor="#000000" fgcolor="#FFFFFF">
<div class="ds-item-container">
<h4>{{:title}}<br/>{{:time}}</h4>
<p><a item="{{:id}}" href="{{:url}}" class="itemLink">view file {{:colcounter}}</a></p>
</div>
</div>
{{* colcounter++; }}
{{* } }}
{{/for}}
</div>
{{* colcounter=1; }}
</div>
{{/for}}
{{* colcounter=1; }}
</div>
</script>
К сожалению, он печатает, на самой первой итерации цикла «Error:. Colcounter не определен». Впоследствии он работает.
Кажется, что я инициализирую свою переменную colcounter, но не могу найти правильный путь. var colcounter =0
не работает.
UPDATE
- jsfiddle: http://jsfiddle.net/ZX6Mk/
- colcounter теперь работает. Я объявил это в глобальном масштабе. Но у меня проблема с datascape.showInvisible. Он также вызывает ошибку
Error: Cannot read property 'showInvisible' of undefined
.
Благодарим Вас за ваше время, a.
Можете ли вы создать скрипку на jsfiddle.net с вашим примером, включая ваш javascript, пожалуйста? Ваш HTML и шаблон предлагают несколько проблем. Во-первых, {{= colcounter}}, вероятно, должен быть {{: colcounter}}, если вы намерены отобразить это значение. Отображение значения в jsrender выполняется с помощью токена, подобного этому {{: myVal}}. Во-вторых, это не очевидно, если colcounter является частью контекста данных для шаблона, переменной javascript, определенной за пределами шаблона (который выиграл; t работает, если вы не передаете его как данные), или переменной, которую вы хотите определить внутри шаблона только. –
Я предполагаю, что colcounter - это переменная, которую вы хотите создать и использовать только внутри шаблона. Прежде чем мы отправимся туда, я настоятельно рекомендую вам изменить шаблон, чтобы не использовать allowCode и вместо этого использовать некоторые вспомогательные функции. Операторы if могут быть легко записаны для использования помощников. Но покажите нам полный пример в jsfiddle, и я могу помочь вам больше. –
Здравствуйте, благодарю вас за комментарии. Вот скрипка: http://jsfiddle.net/ZX6Mk/ – pixeline