2012-08-06 10 views
6

Pytanie w pętli {{for}} w jsRender.jsRender pętla lista <string>

Demo pokazuje możemy pętlę poprzez zbiór złożonych obiektów i wyświetlić ich właściwości:

{{for languages}} 
    <div> 
     <em>{{>name}}</em> 
    </div> 
{{/for}} 

ale co jeśli mój languages jest tylko List<string>? Nie będzie wyświetlany żaden komunikat. Jak możemy odwoływać się do poszczególnych wartości ciągu?

Dzięki.

Odpowiedz

11

Powinieneś być w stanie użyć #data, aby uzyskać dostęp do poszczególnych wartości ciągu wewnątrz pętli.

+0

Po prostu z ciekawości, czy jest to udokumentowana metoda? –

+0

@mattlohkamp Jest o tym wzmianka [tutaj] (https://www.jsviews.com/#paths) ("_' # data" jest skrótem od '# view.data'_") i [tutaj] (https : //www.jsviews.com/#[email protected]) ("widok _a ma właściwość data, która jest bieżącym kontekstem danych używanym do renderowania tego widoku") –

+0

potrzeba przykładu w kontekście –

18
{{#data}} 

Nie działa dla mnie.

Coś wydaje się, że zostały zmienione, to jest to, co zrobił dla mnie:

{{>#data}} 
+1

Pomyśl o ">". – Syska

+1

{{: #data}} jeśli masz jakiś znacznik html w swoim ciągu ... – r2b2s

+0

@ r2b2s - w rzeczywistości jest dokładnie odwrotnie. "Znacznik {{> ...}} powinien być używany zamiast {{: ...}}, gdy dane są renderowane, nie są w pełni zaufane - w celu ochrony przed atakami typu" zastrzyk HTML "." - https://www.jsviews.com/#htmltag –

0

Ponadto, jeśli chcesz zrobić kilka porównań, można użyć kodu jak:

{{if #data == 'xxx' || #data == 'yyy'}} 
... 
{{/if}} 

w scenariusz.

2

Należy użyć:

{{>#data}} lub {{>}} - (koduje HTML)

{{:#data}} lub {{:}} - (bez HTML)

Na przykład:

Załóżmy, że languages Obiekt wygląda następująco:

var languages = ['en', 'sp', 'zh'];

{{for languages}} 
    <div> 
     <em>{{>}}</em> 
    </div> 
{{/for}} 

spowoduje:

<div> 
    <em>en</em> 
</div> 
<div> 
    <em>sp</em> 
</div> 
<div> 
    <em>zh</em> 
</div> 

Dokumentacji

#data

Difference between : and >