我有一个类似如下的Rust结构:
struct Root{
as: Vec<A>,
}
struct A {
bs: Vec<B>,
cs: Vec<C>,
}
struct B {
strings: Vec<String>,
}
struct C {
strings: Vec<u32>,
}
我正在尝试使用Rocket.rs和Handlebar模板来获取输出。
我的handlebars模板目前看起来是这样的,但它不能工作。
{{#each as}}
{{#each bs}}
<h4>{{@index}}</h4>
<pre>{{bs.@index}}</pre>
<pre>{{cs.@index}}</pre>
{{/each}}
{{/each}}
我得到以下错误Error: Error rendering Handlebars template 'index' Error rendering "index" line 28, col 18: invalid digit found in string
,这可能与我在HBS标记中使用的@index
变量有关。
有没有其他方法可以在不改变结构的情况下,从两个数组中只获取一项,并将它们并排放置?
发布于 2020-10-12 15:08:38
我不清楚你想要实现什么。对于as
数组中要遍历bs
和cs
的每个元素的每个A
对象,看起来都是这样的。这假设bs
和cs
对于任何A
都具有相同的长度。
如果这是您想要的,那么我认为您的问题在于您试图从bs
的上下文中访问cs
。在{{#each bs}}
块中,上下文是当前的B
对象。由于B
没有cs
,因此您需要提高上下文级,以便返回到包含bs
和cs
的A
的上下文。在Handlebar中,您可以使用路径进行change the context,如../
。
访问每个bs
的每个bs
索引处的A
和cs
的简化模板为:
{{#each as}}
{{#each bs}}
<h4>{{@index}}</h4>
<pre>{{lookup ../bs @index}}</pre>
<pre>{{lookup ../cs @index}}</pre>
{{/each}}
{{/each}}
注意:为了保持一致性,我对bs
查找和cs
查找都使用了lookup helper。但是,由于我们是在bs
的上下文中,我们可以简单地用.
引用它。如下所示:
<pre>{{.}}</pre>
<pre>{{lookup ../cs @index}}</pre>
我已经创建了一个fiddle供您参考。
https://stackoverflow.com/questions/64313628
复制