Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ember.js 车把动态表行_Ember.js_Handlebars.js_Express Handlebars - Fatal编程技术网

Ember.js 车把动态表行

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)}}&

我正在使用带有把手的余烬。在这种情况下,我需要在一个数组的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)}}</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而不是此文本,该代码会是什么?还是像这样?