在 Ember 1.13 及更高版本中,当迭代字符串数组时,我应该使用哪个键?
Posted
技术标签:
【中文标题】在 Ember 1.13 及更高版本中,当迭代字符串数组时,我应该使用哪个键?【英文标题】:In Ember 1.13 and later what key should I use with each when iterating over an array of strings? 【发布时间】:2015-08-30 22:56:27 【问题描述】:在 Ember 1.13 中,以下代码会生成警告:
#each widgetNames as |widgetName|
component widgetName removeWidget="removeWidget"
/each
widgetNames 是父控制器中的字符串数组。
widgetNames: []
在 Ember 1.13 中,我现在收到此警告:
警告:使用
each
而不指定密钥可能会导致异常 行为。请指定一个key
来标识一个唯一值 每个被迭代的项目。例如。each model key="@guid" as |item|
.
这很容易在您的典型模型场景中修复,但是如何为字符串数组指定键?
编辑:此问题处理您现在在 Ember 1.13 中迭代字符串数组时收到的警告。如果您遇到此警告,您并没有明确地寻找像Accessing Index in #each in emberjs 这样的@index 参数。事实上,Artych 的答案显示了另外两个可能使用的键,它们与Accessing Index in #each in emberjs 的答案无关或不存在,因为这是特定于 @index 参数本身的。
【问题讨论】:
Accessing Index in #each in emberjs 的可能副本 自从@Kitler 提出原始问题后,情况发生了很大变化 【参考方案1】:更新(18 年 6 月)
在 Ember 1.13.2 中,默认使用 key="@identity"
,以防止用户必须为每个 each
调用指定 key=
。
@guid
和 @item
已弃用,取而代之的是新的默认值。
https://github.com/emberjs/ember.js/releases/tag/v1.13.2 https://github.com/emberjs/ember.js/pull/11461
================= Ember 1.13、1.13.1 的答案 ==========
您可以使用key="@index"
或key="@item"
。
key
( docs ) 有几个特殊值:
@index
- 数组中项目的索引。
@item
- 数组本身中的项目。这只能用于字符串数组
或数字。
@guid
- 为每个对象生成一个唯一标识符(使用Ember.guidFor
)。
#each widgetNames key="@index" as |widgetName|
component widgetName removeWidget="removeWidget"
/each
【讨论】:
以上是关于在 Ember 1.13 及更高版本中,当迭代字符串数组时,我应该使用哪个键?的主要内容,如果未能解决你的问题,请参考以下文章
Linq 查询在 ASP.NET-Core 3.0 及更高版本中对数字等字符串进行排序
在 API 23 及更高版本中插入 SD 卡时,getExternalFilesDirs() 未在 ApplicationContext 中更新
IndexedDB - iPad Safari(版本:10 及更高版本)jquery.bind 不起作用
app.EnterText() 不会在 XamarinUiTest 中输入要在 Android 7 及更高版本中输入的文本