jsrenderテンプレートを埋めるために使用するループ内に "colcounter"変数を保持する必要があります。 「:colcounterが定義されていません。エラー」ここ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>
です。その後、それは動作します。
私は私のcolcounter変数が動作していない初期化のようだが、私は正しい方法を見つけることができません。 var colcounter =0
は機能しません。
UPDATE
- jsfiddle:http://jsfiddle.net/ZX6Mk/
- 機能するようになりましたcolcounter。グローバルな範囲で宣言しました。しかし、datascape.showInvisibleに問題があります。また、エラー
Error: Cannot read property 'showInvisible' of undefined
がトリガーされます。
ありがとうございます。 a。
あなたのJavascriptを含め、あなたの例でjsfiddle.netでフィドルを作成できますか? HTMLとテンプレートにはいくつかの問題があります。まず、{{colcounter}}はその値を表示する場合は{{:colcounter}}にする必要があります。 jsrenderの値をこの{{:myVal}}のようなトークンでレンダリングします。第2に、colcounterがテンプレートのデータコンテキストの一部であるか、テンプレート外で定義されたjavascript変数(データを渡さない限りうまく動作しません)、またはテンプレート内で定義する変数のみ。 –
私はあなたが作成してテンプレート内でのみ使用したい変数であると推測しています。そこに行く前に、allowCodeを使わないようにテンプレートを変更し、代わりにいくつかのヘルパー関数を使用することを強くお勧めします。 ifステートメントはヘルパーを使用するように簡単に記述できます。しかし、jsfiddleで完全な例を見せてください。もっと手伝ってください。 –
こんにちは、コメントいただきありがとうございます。ここでは、フィドルです:http://jsfiddle.net/ZX6Mk/ – pixeline