只有在有数据行时才创建表格

huangapple go评论69阅读模式
英文:

Only Create Table when it has rows of data

问题

如果我有一个简单的表格:

<table>
<TR><TH>First Name</TH><TH>Last Name</TH></TR>
<TR><TD>John</TD><TD>Smith</TD></TR>
<TR><TD>Sponge</TD><TD>Bob</TD></TR>
</TABLE>

我可以在MustacheJS中这样加载它:

<Table>
<TR><TH>First Name</TH><TH>Last Name</TH></TR>
{{#loop}}
<TR><TD>{{fname}}</TD><TD>{{lname}}</TD></TR>
{{/loop}}
</TABLE>

并且它可以正常工作,数据格式如下:

{ loop: [{fname:"John", lname:"Smith"},{fname:"Sponge", lname:"Bob"}]}

但是如果我只想在有数据行时才显示表格,应该如何做呢?如果我将#loop 移动到包围整个表格,它会为每一行创建多个表格。

英文:

If I have a simple table:

&lt;table&gt;
&lt;TR&gt;&lt;TH&gt;First Name&lt;/TH&gt;&lt;TH&gt;Last Name&lt;/TH&gt;&lt;/TR&gt;
&lt;TR&gt;&lt;TD&gt;John&lt;/TD&gt;&lt;TD&gt;Smith&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;&lt;TD&gt;Sponge&lt;/TD&gt;&lt;TD&gt;Bob&lt;/TD&gt;&lt;/TR&gt;
&lt;/TABLE&gt;

I can load it in MustacheJS with something like:

&lt;Table&gt;
&lt;TR&gt;&lt;TH&gt;First Name&lt;/TH&gt;&lt;TH&gt;Last Name&lt;/TH&gt;&lt;/TR&gt;
{{#loop}}
&lt;TR&gt;&lt;TD&gt;{{fname}}&lt;/TD&gt;&lt;TD&gt;{{lname}}&lt;/TD&gt;&lt;/TR&gt;
{{/loop}}
&lt;/TABLE&gt;

And it works properly with data in the format of:

{ loop: [{fname:&quot;John&quot;, lname:&quot;Smith&quot;},{fname:&quot;Sponge&quot;, lname:&quot;Bob&quot;}]}

But how do the same thing but ONLY have the table show at all if there are rows of data? If I move the #loop to surround the table, it creates multiple tables per row.

答案1

得分: 2

你可以通过向数据添加一个附加属性来实现这一点,该属性将根据要循环的数据的长度返回一个布尔值。然后,根据这个新属性,向模板添加一个部分来显示表格。

数据:

var data = {
  loop: [
    { fname: "John", lname: "Smith" },
    { fname: "Sponge", lname: "Bob" }
  ],
  shouldLoop() { return this.loop.length > 0 }
};

模板:

{{#shouldLoop}}
<table>
<tr><th>First Name</th><th>Last Name</th></tr>
{{#loop}}
<tr><td>{{fname}}</td><td>{{lname}}</td></tr>
{{/loop}}
</table>
{{/shouldLoop}}
英文:

You can achieve this by adding an additional property to your data that will return a boolean based on the length of your data to loop. Then add a section to your template to display the table based on this new property.

Data:

var data = {
  loop: [
    { fname: &quot;John&quot;, lname: &quot;Smith&quot; },
    { fname: &quot;Sponge&quot;, lname: &quot;Bob&quot; }
  ],
  shouldLoop() { return this.loop.length &gt; 0 }
};

Template:

{{#shouldLoop}}
&lt;Table&gt;
&lt;TR&gt;&lt;TH&gt;First Name&lt;/TH&gt;&lt;TH&gt;Last Name&lt;/TH&gt;&lt;/TR&gt;
{{#loop}}
&lt;TR&gt;&lt;TD&gt;{{fname}}&lt;/TD&gt;&lt;TD&gt;{{lname}}&lt;/TD&gt;&lt;/TR&gt;
{{/loop}}
&lt;/TABLE&gt;
{{/shouldLoop}}

huangapple
  • 本文由 发表于 2023年2月24日 03:56:29
  • 转载请务必保留本文链接:https://go.coder-hub.com/75549725.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定