把手JS对象迭代

把手JS对象迭代

问题描述:

在我gulpfile我定义对象的MemberInfo阵列传递到模板:把手JS对象迭代

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": "[email protected]", "list_id": "2", "name": "obsession cologne 3 oz", "brand": "", "price": "55.99"}, 
      {"member_email": "[email protected]", "list_id": "1", "name": "red plaid skirt", "brand": "versace", "price": "55.99"}, 
      {"member_email": "[email protected]", "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,显示这些字段“

{{name}} 
{{brand}} 
{{price}} 

这样做的正确方法是什么?我是全新的吞咽和车把,我发现的解释在这方面似乎没有任何意义。车把佣工有一个漂亮的比较操作{{#is }}所以我写了这个代码,但它显然是不正确设置:

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

我这个半称职的评论道歉,但我没有时间充分答案它现在。我有类似的情况,但我正在寻找匹配和渲染的项目数量。这里是手柄帮手,我希望这个想法有帮助。让我知道如果它不,我可以很快添加更多的上下文。

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