2017-07-14 127 views
0

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

回答

0

我這個半稱職的評論道歉,但我沒有時間充分答案它現在。我有類似的情況,但我正在尋找匹配和渲染的項目數量。這裏是手柄幫手,我希望這個想法有幫助。讓我知道如果它不,我可以很快添加更多的上下文。

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