2016-09-22 4 views
0

これはノード内にあります。私はそれらを行う場合単純なネストされたハンドルバーではない作業

app.get('/payees', function(req, res) 
    { 
    var categoriesPromise = Category.getAllCategories(); 
    var payeesWhereNullPromise = categoriesPromise.then(function() { 
     return Payee.getAllPayeesWhere({categoryId:null}) 
    }) 
    payeesWhereNullPromise.then(function(payees) { 
     var categories = categoriesPromise.value(); 
     res.render('payees', {categories: categories, subcategories: [], payees:payees}); 
    }) 
}); 

これは、別々に、彼らは完璧に動作しますが、お互いに何も起こりません内部で瞬間は、私はそれらを置くフロントエンド

{{#each payees as |payee|}} 
    {{#each categories as |category|}} 
      category.name 
    {{/each}} 
{{/each}} 

です。

答えて

1

ループするアレイのプロパティは、#eachの中でしかアクセスできません。あなたの例でネストされたforeachを使用すると、ハンドルバーがpayees配列のオブジェクトプロパティとしてcategoriesを見つけようとする問題が発生します。しかし、あなたのケースでは、categoriesはグローバル変数であるため、見つからないでしょう。

しかし、あなたは、ハンドルバーヘルパー機能で何ができるのですか?

編集:ここでは、ハンドルバーヘルパー機能を使用する例を示します。

テンプレート:

{{#list categories payees}}{{/list}} 

ノードサーバコード:

var hbs = require('hbs'); 
hbs.registerHelper('list', function(categories, payees, options) { 
    var out = ""; 
    // Here you can use standard JavaScript to do whatever you want. 
    // Also nested loops are possible. 
    // Put the wished HTML into the out variable and it will get rendered 
    // in your template. 
    for (var i = 0; i < categories.length; i++) { 
     out += "<div>"+categories[i]+"</div>"; 
     for (var j = 0; j < payees.length; j++) { 
     // and so on 
     } 
    } 
    return out; 
}); 

文書:​​http://handlebarsjs.com/

+0

申し訳ありませんが、私はこれに新しいです。あなたは私に事例を教えてもらえますか?私はヘルパーが何であるか知っていますが、私はあなたが何を意味するか分かりません。 :(あらかじめありがとう) –

+0

私の答えは例を使って更新されましたが、ドキュメントを見てください –

+0

非常にありがとうございます<3 –

関連する問題