任意嵌套的数组

问题描述:

https://svelte.technology/guide#each-blocks每个块给出每块以输出一个台状结构的一个例子:任意嵌套的数组

<div class='grid'> 
    {{#each rows as row, y}} 
    <div class='row'> 
     {{#each columns as column, x}} 
     <code class='cell'> 
      {{x + 1}},{{y + 1}}: 
      <strong>{{row[column]}}</strong> 
     </code> 
     {{/each}} 
    </div> 
    {{/each}} 
</div> 

的例子要求这种特殊的结构:

{ 
    "columns": [ 
    "foo", 
    "bar", 
    "baz" 
    ], 
    "rows": [ 
    { 
     "foo": "a", 
     "bar": "b", 
     "baz": "c" 
    }, 
    { 
     "foo": "d", 
     "bar": "e", 
     "baz": "f" 
    }, 
    { 
     "foo": "g", 
     "bar": "h", 
     "baz": "i" 
    } 
    ] 
} 

有一种方法来如果事先不知道这些列,或者甚至更一般地说,如果每一行的长度可能不同,请使用此功能?例如。 (后者):

{ 
    "rows": [ 
    [1], 
    [2, 3, 4], 
    [5, 6] 
    ] 
} 

我没有看到任何地方指示#each迭代之前,可以“伸进”组件的数据的语法,因为它是。

我错过了什么,或者是#each这个不可能的内在循环吗?如果不可能,还有其他方法可以做到吗? (例如,你可以使用函数来遍历内部数组,并嵌套一个辅助模板?)

我刚刚学习文档在这里,但从我可以告诉你应该能够把row作为一个的cell的名单:

<div class='grid'> 
    {{#each rows as row, y}} 
    <div class='row'> 
     {{#each row as cell, x}} 
     <code class='cell'> 
      {{x + 1}},{{y + 1}}: 
      <strong>{{cell}}</strong> 
     </code> 
     {{/each}} 
    </div> 
    {{/each}} 
</div> 
+0

的确!请参阅https://svelte.technology/repl/?version=1.6.11&gist=d752ea8039f82f70ff490a87b90ab318中的操作。我不确定你在文档中发现了哪些内容,能否指出我的看法?我链接到的部分没有太多细节,因此对于我来说,您可以使用数据数组中的某些内容,或者使用当前上下文中的某些内容,而不指定它们,有点...... magic-y。 :) – Kev

+1

我实际上并没有从文档中提取特定的文本;我只是推断'#each list as item'可能会创建一个变量'item',并且根据我在其他语言中的知识,我希望这个'item'也可以迭代。通过“学习文档”,我的意思是说,在尝试回答这个问题之前,我对Svelte没有任何经验,只是为了让我知道如果我犯了新手错误。但我很高兴这些建议有帮助! :) – gyre