Ember.js 余烬1.13每个循环中的每个循环

Ember.js 余烬1.13每个循环中的每个循环,ember.js,Ember.js,如上所述,Ember 1.13需要{{each}帮助程序的一个键。从Ember 1.13.2开始,默认密钥为@identity 现在我正试图修复我的代码,我有一个嵌套在另一个循环中的each循环(一段显示日历的代码)。我得到以下错误: Uncaught Error: Duplicate key found ('(null)') for '{{each}}' helper, please use a unique key or switch to '{{#each model key="@inde

如上所述,Ember 1.13需要
{{each}
帮助程序的一个键。从Ember 1.13.2开始,默认密钥为
@identity

现在我正试图修复我的代码,我有一个嵌套在另一个循环中的each循环(一段显示日历的代码)。我得到以下错误:

Uncaught Error: Duplicate key found ('(null)') for '{{each}}' helper, please use a unique key or switch to '{{#each model key="@index"}}{{/each}}'.
但是,即使我添加一个
@guid
作为键,仍然会显示错误。代码:

{{#each weeks key="@guid" as |week|}}
    <tr>
        {{#each week key="@guid" as |day|}}
            <td class="day"></td>
        {{/each}}
    </tr>
{{/each}}
{{#每周键=“@guid”as | week |}
{{#每周键=“@guid”作为|天|}
{{/每个}}
{{/每个}}
我不明白。既然
@guid
应该为每个对象创建一个唯一的标识符,为什么我仍然会发现这个
重复键
错误


编辑
我认为
找到的重复键
与嵌套的每个循环有关,这显然是错误的。在尝试按照基特勒的建议制作小提琴之后,我确实理解了我的问题(见答案)

经过反复试验,我确实明白了错误的原因

原因
我的循环中的某些项
null
。Ember 1.13.x及以上版本尝试为每个项目添加id。由于
null
表示无,第一个
null项
get key
null
,因为余烬提供了一个无键对无键。下面的
null项
也会得到一个nothing键,因为Ember对每个
null项
都会这样做

错误
因为助手要求每个项目都有一个唯一的id,所以Ember抛出一个
找到的重复键('(null)
错误;告诉程序员一些项目具有相同的id

解决方案
修复这个问题非常简单,只需提供一个空对象(
{}
),而不是
null
。由于一个空对象与另一个空对象不同,Ember将为每个空对象创建一个唯一的id



代码示例:。

这是v1.13.x中的一个回归,预计将在修补程序(可能是v1.13.6)中解决

这是最后一个问题:


合并的拉取请求:

您链接到states@guid和@item的问题被弃用,取而代之的是新的默认值。这只是我的问题,
新的默认值
在循环中包装循环时不起作用。如果你有一个“正常”循环,默认值会使它更容易(因为你不需要做任何事情)。如果你不使用它,你不需要密钥…@Kitler:如果我不提供密钥,我会出错…你能在一个确认中设置你的示例吗?确认:Ember 1.13.6确实解决了这个问题:->#11861[错误修复]更新HTMLBars以允许重复的{{each}钥匙。