2013-02-23 11 views
21

ハンドルバー#eachを、配列ではないオブジェクトに使いたいです。流星とハンドルバー#オブジェクトごとに反復処理する

どうすればよいですか?私はまだ流星の特別な機能を#eachで動作させる必要があります。

私のオブジェクトは、の形態である:

{ 
    john: "hello", 
    bob: "hi there" 
} 

私はこのような出力を取得しようとしている:あなたはハンドルを理解するために、あなたのjsでヘルパーを使用する必要が

<div>hello</div> 
<div>hi there</div> 
+0

オブジェクトとして使用しているものを投稿できますか?反復処理されたオブジェクトのプロパティを取得することはできませんが、常に '{{item.property}} 'を使用することはできません。 – Akshat

+0

@Akshatオブジェクトを投稿しました。ご協力いただきありがとうございます。 – Harry

+3

**このための組み込みサポート**があります。 http://stackoverflow.com/q/11884960/50079 – Jon

答えて

37

をあなたのオブジェクト:

Template.registerHelper('arrayify',function(obj){ 
    var result = []; 
    for (var key in obj) result.push({name:key,value:obj[key]}); 
    return result; 
}); 
01 JSあなたのクライアントに追加

し、HTMLに(あなたも{{name}}でキーを使用することができます)を使用します。

{{#each arrayify myobject}} 
    <div title="hover here {{name}}">{{value}}</div> 
{{/each}} 

myobjectは、あなたのテンプレートから来ている:

Template.templatename.helpers({ 
    myobject : function() { 
     return { john:"hello", bob: "hi there" } 
    } 
}); 
+0

流星のテンプレートを使ってハンドルバーのヘルパーでそれをすることに利点はありますか? – Harry

+1

ヘルパーはすべてのテンプレートで一度動作するように一度だけ宣言する必要があります。テンプレートヘルパーは1つのテンプレートに対してのみ機能しますので、毎回それを再宣言する必要があります。より多くのテンプレートでオブジェクトを使用することにした場合に使用しました – Akshat

+0

APIが変更されたので、Handlebars.registerHelper()の代わりに 'Template.registerHelper()'を使用してくださいhttp://docs.meteor.com/#/full/template_registerhelper –

8

あなたはアンダースコア_.mapで配列にあなたのオブジェクトに変換することができます

HTML:

<template name="test"> 
    {{#each person}} 
     <div>{{greeting}}</div> 
    {{/each}} 
</template> 

のJS:

Template.test.helpers({ 
    person : function() { 
     return _.map(object, function(val,key){return {name: key, greeting: val}}); 
    } 
}); 
4

それはHandlebars.registerHelperとは対照的に、これを書いている時点では流星でハンドルバーヘルパーを宣言するための正しい方法はUI.registerHelper方法であることを、今、これを見つける人々のために注意すべきです。したがって、上記のヘルパーは次のようになります:

UI.registerHelper("arrayify", function(obj){ 
    result = []; 
    for (var key in obj){ 
     result.push({name:key,value:obj[key]}); 
    } 
    return result; 
}); 
+4

今日は 'Template.registerHelper()'ですhttp://docs.meteor.com/#/full/template_registerhelper –