首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Handlebar js对象迭代

Handlebar js对象迭代
EN

Stack Overflow用户
提问于 2017-07-15 03:40:46
回答 1查看 361关注 0票数 0

在我的gulpfile中,我定义了一个要传递给模板的memberInfo对象数组:

代码语言:javascript
复制
var gulp = require('gulp');
var handlebars = require('gulp-compile-handlebars');
var rename = require('gulp-rename');
var handlebars_helpers = require('handlebars-helpers')(); 
//http://assemble.io/helpers/helpers-html.html
var _ = require('underscore');

gulp.task('default', function () {
    var templateData = {
        memberInfo: [
            {"member_email": "amy@email.com", "list_id": "2", "name": "obsession cologne 3 oz", "brand": "", "price": "55.99"},
            {"member_email": "amy@email.com", "list_id": "1",  "name": "red plaid skirt", "brand": "versace", "price": "55.99"},
            {"member_email": "amy@email.com", "list_id": "1", "name": "black ruffle shirt", "brand": "versace", "price": "47.99"},
        ]
    }

    options = {
        helpers: _.extend(handlebars_helpers) 
    }

    return gulp.src('template/email.handlebars')
        .pipe(handlebars(templateData, options))
        .pipe(rename('email.html'))
        .pipe(gulp.dest('output'));
}

我想在我的模板上做的是“对于memberInfo中的每个对象,如果list_id等于1,则显示这些字段”

代码语言:javascript
复制
{{name}}
{{brand}}
{{price}}

这样做的正确方法是什么?我是一个全新的酒杯和把手,我找到的解释在这种情况下似乎没有任何意义。Handlebar-helpers有一个很好的比较操作符{{#is }},所以我写了这段代码,但它显然没有正确设置:

代码语言:javascript
复制
<ul>
  {{#each memberInfo}}
    {{#each this}}
        <li>Key: {{@key}} Value = {{this}}</li>
        {{#is @key 'list_id'  }} 
            {{#is this 1 }}
               {{name}}
               {{brand}}
               {{price}}
               //Nothing is accessible here except this, as far as i can tell, so none of these values render

            {{/is}}
        {{/is}}

    {{/each}}
  {{/each}}
</ul>
EN

回答 1

Stack Overflow用户

发布于 2017-07-15 03:58:19

我为这个半途而废的评论道歉,但我现在没有时间完整地回答它。我有类似的情况,但我希望获得匹配和渲染的项数。这是handlebars helper,我希望这个想法能有所帮助。如果没有,请让我知道,我可以很快添加更多的上下文。

代码语言:javascript
复制
exports.filterLength = function (object, property, value, options) {
  var ret = 0;

  for (var i = 0, j = object.length; i < j; i++) {
    if (object[i][property] === value) {
      ret = ret + 1;
    }
  }
  return ret;    
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45110508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档