8

{{#each}} を使用して Meteor のコレクションを反復処理しています。AngularJS で $last を使用して ngRepeat を使用できるように、最後の要素にいるかどうかを知りたいです。

たとえば、「私は猫、犬、イルカが好きです」のような人間が読める列挙を構築するために使用できます。

Template.myTemplate.helpers({
    likedAnimals: function(){return ['dogs','cats','dolphins'];}
});

<template name='myTemplate'>
    I like  
    {{#each likedAnimals}}
        {{#if !$first && !$last}}, {{/if}}
        {{#if $last}} and {{/if}}
        {{this}}
    {{/each}}
</template>

Meteor でこの状態を確認する方法はありますか?

4

3 に答える 3

8

コレクション カーソルで同じことを行う方法を疑問に思っている人がいる場合は、handlebar-helpersパッケージのおかげで、はるかに簡単な方法があります。

その後、次を使用できます。

$mapped - $first、$last、および $index をカーソルまたは配列にマップします

テンプレートの $last ヘルパーと組み合わせると、次のようになります。

{{#each $mapped myCursor}}
  {{name}}{{#unless $last}},{{/unless}}
{{/each}}

PS:これは配列でも機能します

于 2015-07-27T22:47:49.177 に答える
1

これはまだ meteor (バージョン 1.0) ではサポートされていませんが、次のようにして自分で追加できます。

Template.myTemplate.helpers({
    likedAnimals: function(){
        var animals = ['dogs','cats','dolphins']
        return animals.map(function(animal, index){
            return {
                name: animal,
                isFirst: index==0,
                isLast: index==animals.length-1
            }
        })
    }
})

ただし、これは反応性ではうまく機能しません (反応性で適切に動作させるのははるかに困難です。これが、これがまだ組み込み機能ではない理由だと思います)。リアクティブ データ ソース、これは正常に動作するはずです。

于 2014-11-20T09:55:26.773 に答える