Meteor 标签输入对的唯一id

Meteor 标签输入对的唯一id,meteor,Meteor,我正在尝试为标签和输入对生成唯一id 通过谷歌搜索,我现在知道,与手柄不同,空格键中还没有数组@index语法扩展(还有人知道为什么自0.1版以来,开发在过去5个月一直处于非活动状态?) 因此,我最终使用了JS Array.map()解决方案,其灵感来源于和其他文章。但是,此解决方案返回对象的标签和输入对,DOM在会话的“分页”过程中似乎呈现相同的对象 实例: 单击第一组“非索引ID”复选框,然后单击“下一个/上一个”,DOM将正确显示新的复选框集 但是,单击下面的第二组“索引ID”复选框,然

我正在尝试为标签和输入对生成唯一id

通过谷歌搜索,我现在知道,与手柄不同,空格键中还没有数组@index语法扩展(还有人知道为什么自0.1版以来,开发在过去5个月一直处于非活动状态?)

因此,我最终使用了JS Array.map()解决方案,其灵感来源于和其他文章。但是,此解决方案返回对象的标签和输入对,DOM在会话的“分页”过程中似乎呈现相同的对象

实例:

  • 单击第一组“非索引ID”复选框,然后单击“下一个/上一个”,DOM将正确显示新的复选框集
  • 但是,单击下面的第二组“索引ID”复选框,然后单击next/previous,DOM似乎保留了相同的复选框,因为从上一页中选择的一个复选框在下一页中保持选中状态
我做错了什么或错过了什么


我还提出了快速测试和优化:

我通过查看找到的解决方案似乎是为生成的对象提供一个名为
\u id
的唯一字段(生成方式类似于
{questionId}:{{questionIndex}:{{choiceIndex}
)。请看这个陨石板:

我对流星内部结构的了解还不足以说明原因,但这一评论似乎很有意义:

// 'lastSeqArray' contains the previous value of the sequence
// we're observing. It is an array of objects with '_id' and
// 'item' fields.  'item' is the element in the array, or the
// document in the cursor.
//
// '_id' is whichever of the following is relevant, unless it has
// already appeared -- in which case it's randomly generated.
//
// * if 'item' is an object:
//   * an '_id' field, if present
//   * otherwise, the index in the array
//
// * if 'item' is a number or string, use that value
//
// XXX this can be generalized by allowing {{#each}} to accept a
// general 'key' argument which could be a function, a dotted
// field name, or the special @index value.
\u id
不存在时,它使用数组中的索引,因此我猜
ObserveSequence
假定它是具有更改字段的同一个对象,而不是不同的对象,因此它重新使用旧元素,而不是销毁它们并重新创建它们。我假设选择了名称
\u id
,这样它就可以很好地处理Minimongo光标上由
.fetch()
生成的数组


我不知道这是否是记录在案的行为,或者它将来是否会改变。

我想我已经将不一致性归结为:当你#每个人都在一个字符串数组上时,表单状态不会被保留;当您在一组对象上进行#时,将保留窗体状态。我不知道为什么。太孤立了,ta!太好了,非常感谢,我会请你喝杯啤酒顺便说一句,您如何知道在源代码中查找位置?我搜索了以查找
#每个
的实现位置,并看到了对
ObserveSequence
的引用,因此我搜索了它。