Templates 在jade模板中分块数组
我有一个数组和一个mixin,它将数组作为参数。 如何将数组分为四个部分并传递给mixin 类似这样的东西,但更好,更有效:Templates 在jade模板中分块数组,templates,pug,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]]) 我建议使用一种稍微不同的方法:在请求处理函数中将数组转换为二维数组,然后在Jade模板中的二维数组(数组数组数组)上执行迭代 使
each index, i in myArray
if i%4 == 0
+carouselItem([myArray[i], myArray[i+1], myArray[i+2], myArray[i+3]])
我建议使用一种稍微不同的方法:在请求处理函数中将数组转换为二维数组,然后在Jade模板中的二维数组(数组数组数组)上执行迭代 使用这种方法,模板将更加简单,所有转换都将发生在处理程序方法(控制器)中,您可以在其中访问不同的库等 例如: 要将数组转换为二维数组,可以使用以下方法: 您的请求处理程序可以如下所示: 如果您的
myArray
是,比如说,['a','b','c','d','e','f','g','h']
,arrayTo2DArray(myArray,4)
将返回
您的翡翠模板可以如下所示(更简单)
我希望这会有所帮助。汤姆欢呼,我曾考虑过对数据进行预处理,但这将意味着另一层——检索数据、检查模板,然后根据浏览器大小进行分块。我希望我能将这种复杂性推进模板,因为它是唯一需要预处理的模板。有可能达成妥协吗?ie编写用于在模板内分块的js。我知道您可以使用编写简单的js,但是您可以编写更复杂的多行代码吗?或者你能执行一段外部代码吗?好的,只要读一下:(允许多行JS var定义),它有一个很大的不符合维护者(TJ)的形式,所以我猜我想做的会被认为是不好的做法,所以预处理就是。@neilmanuell,这一切都取决于你的偏好和方法。我使用这种模式是因为它对我有效,在许多情况下,它在维护和更改期间为我节省了大量时间。正如您可能在提及(和其他评论)中看到的那样,TJ Holowaychuk希望将职责分开,即用于呈现的模板和用于获取和准备数据的控制器(也称为请求处理程序)。我相信您可能会发现不同的方法-但最终目标是尽快交付达到特定质量的软件-在我看来,预处理是一种方法。
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)
}
}
[
['a', 'b', 'c', 'd'],
['e', 'f', 'g', 'h']
]
each values in myArray
+carouselItem(values)