簡體   English   中英

把手js對象迭代

[英]Handlebars js object iteration

在我的gulpfile中,我定義了一個memberInfo對象數組,以傳遞給模板:

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,則顯示這些字段”

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

正確的做法是什么? 我是不熟悉gulp和把手的新手,在這種情況下,我發現的解釋似乎沒有任何意義。 Handlebar-helpers有一個漂亮的比較運算符{{#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;    
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM