简单嵌套的车把每个都不工作

Simple Nested handlebar foeach doesnt work

本文关键字:工作 嵌套 简单      更新时间:2023-09-26

这是一个节点。

   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}}

如果我把它们分开,它们工作得很好,但当我把它们放在一起时,什么也没有发生。

您只能访问在#each中循环的数组的属性。与嵌套foreach在您的例子中,你有问题,车把试图找到categories作为对象属性在payees数组。但是在您的情况下,categories是一个全局变量,因此找不到。

但是你可以用Handlebars帮助函数做你想做的。

EDIT:这里有一个使用车把柄辅助函数的例子。

模板:

 {{#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;
});

文档:https://github.com/pillarjs/hbs http://handlebarsjs.com/