2016-08-25 4 views
0

ハンドルバーは、JSライブラリですので、なぜそれは、次のような data.array.[0] 代わりの data.array[0]ハンドルバーは、インデックスで配列にアクセスするためにドットブラケット表記を使用するのはなぜですか?

+0

これは有効なJS構文ではないため、JSのプリプロセッサでなければなりません。 – Barmar

+0

私はそれをプリプロセッサの代わりにライブラリと呼ぶのは間違っているかもしれませんが、この 'ドットブラケット'表記を使うデザインの選択肢はまだ分かりません – bigsandwich

答えて

2

角括弧は「segment-literal notation」です:あなたが見ることができるように

{{#each articles.[10].[#comments]}} 
<h1>{{subject}}</h1> 
<div> 
    {{body}} 
</div> 
{{/each}} 

有効な識別子ではありませんプロパティを参照するには、セグメント・リテラル表記を使用することができます#commentsのように、式パス内の裸の識別子として問題になる可能性のある識別子を「引用」するには、角括弧を使用します。問題のある識別子のこのカテゴリには、パスの終わりに来るときに(配列のインデックスとして)整数である識別子も含まれます。 this answer on How do I access an access array item by index in handlebars?

なぜ問題のある識別子(たとえば、foo[#comments])に角括弧構文を使用すると、ドットを完全に取り除かなかったのか、私は確かに言えませんが、パスのセグメントが常にピリオドで区切られるようにするための可読性。

+0

これは私が探していた答えです。書面と説明に感謝します。 – bigsandwich

0

Handlebars.jsMustacheライブラリの拡張版である配列のインデックス値の前にドットを必要としません。私はそれがMustacheと同様の文法を使用していると思いますので、このドット表記は何とかそこから来なければなりません。

関連する問題