在 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 及更高版本中对数字等字符串进行排序

当用户打开iOS 7及更高版本的位置服务时收到通知

在 API 23 及更高版本中插入 SD 卡时,getExternalFilesDirs() 未在 ApplicationContext 中更新

IndexedDB - iPad Safari(版本:10 及更高版本)jquery.bind 不起作用

app.EnterText() 不会在 XamarinUiTest 中输入要在 Android 7 及更高版本中输入的文本

使用密钥库安卓。针对版本 18 及更高版本。必须使用已弃用的方法调用?