21

#each配列ではないオブジェクトでハンドルバーを使用したい。

それ、どうやったら出来るの?で流星の特別な機能を引き続き使用するには、それが必要です#each

私のオブジェクトは次の形式です。

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

私は次のような出力を取得しようとしています:

<div>hello</div>
<div>hi there</div>
4

3 に答える 3

37

ハンドルバーがオブジェクトを理解できるように、jsでヘルパーを使用する必要があります。

クライアントjsに追加

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

{{name}}そして、HTMLで(でキーを使用することもできます)を使用します。

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

myobjectテンプレートから取得:

Template.templatename.helpers({
    myobject : function() { 
      return { john:"hello", bob: "hi there" } 
    }
});
于 2013-02-23T01:02:49.260 に答える
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}});
    }
});
于 2014-03-10T05:13:35.620 に答える
4

この記事の執筆時点でMeteorでHandlebarsヘルパーを宣言する正しい方法は、Handlebars.registerHelperではなくUI.registerHelperメソッドを使用することであることに注意してください。したがって、上記のヘルパーは次のようになります。

UI.registerHelper("arrayify", function(obj){
    result = [];
    for (var key in obj){
        result.push({name:key,value:obj[key]});
    }
    return result;
});
于 2015-02-24T01:38:46.797 に答える