在玉模板中分块数组

时间:2014-02-16 09:21:52

标签: templates pug

我有一个数组,以及一个将数组作为参数的mixin。 我如何将数组分成四个部分并传递给mixin?

所以有点像这样,但更好,更有效:

 each index, i in myArray
     if i%4 == 0
         +carouselItem([myArray[i], myArray[i+1], myArray[i+2], myArray[i+3]])

1 个答案:

答案 0 :(得分:1)

我建议采用一种不同的方法:在您的请求处理函数中将数组转换为二维数组,然后在Jade模板中对二维数组(数组数组)执行迭代。

使用这种方法,模板将变得更加简单,所有转换都将在处理程序方法(控制器)中发生,您可以在其中访问不同的库等。

实施例: 为了将数组转换为二维数组,您可以使用以下方法:

function arrayTo2DArray (list, howMany) {
    var result = []; input = list.slice(0); 
    while(a[0]) { 
        result.push(a.splice(0, howMany)); 
    }
    return result;
}

您的请求处理程序可能如下所示:

exports.handler = function(req, res) {

    // myArray with some values

    res.render('template' { 
        myArray: arrayTo2DArray(myArray, 4) 
    }
}

如果您myArray['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']arrayTo2DArray(myArray, 4)将会返回

[
    ['a', 'b', 'c', 'd'], 
    ['e', 'f', 'g', 'h']
]

您的Jade模板看起来像这样(更简单)

each values in myArray
    +carouselItem(values)

我希望这会有所帮助。