Ember.js 车把动态表行
我正在使用带有把手的余烬。在这种情况下,我需要在一个数组的3次迭代之后动态创建新的表行Ember.js 车把动态表行,ember.js,handlebars.js,express-handlebars,Ember.js,Handlebars.js,Express Handlebars,我正在使用带有把手的余烬。在这种情况下,我需要在一个数组的3次迭代之后动态创建新的表行 <table> {{#each items as |item itemIndex|}} {{#if (compare (mod itemIndex 3) '===' 0)}}<tr>{{/if}} <td>{{item.id}}</td> {{#if (compare (mod itemIndex 3) '===' 2)}}&
<table>
{{#each items as |item itemIndex|}}
{{#if (compare (mod itemIndex 3) '===' 0)}}<tr>{{/if}}
<td>{{item.id}}</td>
{{#if (compare (mod itemIndex 3) '===' 2)}}</tr>{{/if}}
{{/each}}
</table>
{{{#每个项目作为{项目索引}
{{{#如果(比较(mod itemIndex 3)==='0)}{{{/if}}
{{item.id}
{{{#如果(比较(mod itemIndex 3)==='2)}{{{/if}}
{{/每个}}
为了举例说明,请假设items数组中始终有一个因子3。当我试图保存这段代码时,我得到一个语法错误,即没有与打开标记匹配的关闭标记。如何在没有语法错误的情况下动态创建and
我使用的是ember CLI 2.9.1版 当您运行您提供的代码段时,您很可能会在处理route:index Unclosed element tr(第8行)时遇到一个指示
错误的错误。错误:未关闭的元素tr(第8行)。
这是因为ember模板编译器
不知道呈现是否会导致正确的HTML
页面。如果项
数组不能被3整除怎么办;我们将在运行时得到一个错误。为了防止这种情况发生<代码>余烬模板编译器抛出一个错误,指示未关闭的tr
标记
所以,;可以采取什么措施来防止这种情况?您可以在js文件中创建一个computed属性,该属性只返回所需的行数,如下所示:
rowCount: Ember.computed('items.length', function() {
return this.get('items.length')/3;
})
export function getItemAtArrayIndex(params/*, hash*/) {
let array = params[0];
let index = params[1];
let rowIndex = params[2];
return array[index+rowIndex*3];
}
之后,您只需使用提供的range
helper,并在模板中执行以下操作:
<table>
{{#each (range 0 rowCount) as |rowIndex|}}
<tr>
{{#each (range 0 3) as |columnIndex|}}
{{! `number` will go from 0 to 2}}
<td>
{{get (get-item-at-array-index items columnIndex rowIndex) 'id'}}
</td>
{{/each}}
</tr>
{{/each}}
</table>
我已经为你们准备了以下内容,这是我上面已经解释过的内容的总结。这样做;您将避免出现
Unclosed元素tr
错误;由于标记将显式关闭,模板编译器不会抱怨。当您运行您提供的代码段时,您很可能会在处理route:index Unclosed element tr(第8行)时遇到一个错误,指示错误。错误:未关闭的元素tr(第8行)。
这是因为ember模板编译器
不知道呈现是否会导致正确的HTML
页面。如果项
数组不能被3整除怎么办;我们将在运行时得到一个错误。为了防止这种情况发生<代码>余烬模板编译器抛出一个错误,指示未关闭的tr
标记
所以,;可以采取什么措施来防止这种情况?您可以在js文件中创建一个computed属性,该属性只返回所需的行数,如下所示:
rowCount: Ember.computed('items.length', function() {
return this.get('items.length')/3;
})
export function getItemAtArrayIndex(params/*, hash*/) {
let array = params[0];
let index = params[1];
let rowIndex = params[2];
return array[index+rowIndex*3];
}
之后,您只需使用提供的range
helper,并在模板中执行以下操作:
<table>
{{#each (range 0 rowCount) as |rowIndex|}}
<tr>
{{#each (range 0 3) as |columnIndex|}}
{{! `number` will go from 0 to 2}}
<td>
{{get (get-item-at-array-index items columnIndex rowIndex) 'id'}}
</td>
{{/each}}
</tr>
{{/each}}
</table>
我已经为你们准备了以下内容,这是我上面已经解释过的内容的总结。这样做;您将避免出现
Unclosed元素tr
错误;由于标记将显式关闭,模板编译器不会抱怨。谢谢,两个带有范围帮助器的循环完成了这一任务!例如,如果我需要将电子邮件链接到mailto而不是此文本,该代码会是什么?或者类似的东西?谢谢,两个循环与范围助手做到了!例如,如果我需要将电子邮件链接到mailto而不是此文本,该代码会是什么?还是像这样?