Aurelia在重复

时间:2016-12-07 15:45:20

标签: aurelia aurelia-binding

有没有理由为什么repeat.for绑定会从转发器中的元素中删除属性?

<div repeat.for="i of model.someArray.length">
    <label>Some Array - Index ${i + 1}</label>
    <input value.bind="model.someArray[i]" some-custom-attribute="someArray[${i}]"/>
</div>

并且some-custom-attribute没有在重复中输出,但如果我要删除其中的字符串插值,那么它输出正常。

==编辑==

我已将其放在评论中,但只是为了确保每个人都在同一页面上,理想情况下这是我期望的输出:

<input value.bind="model.someArray[i]" some-custom-attribute="someArray[0]"/>

some-custom-attribute不是aurelia属性,它是第三方JS库使用的纯HTML,因此这里的目标是将索引的文本值转换为文本属性值。

1 个答案:

答案 0 :(得分:2)

model.someArray.length是一个数字,而不是一个数组。您需要迭代数组。如果确实需要当前索引,则转发器会提供$index属性供您使用。

您的代码应如下所示:

<div repeat.for="item of model.someArray">
    <label>Some Array - Index ${$index + 1}</label>
    <input value.bind="item" some-custom-attribute.bind="item"/>
</div>

要回答原始问题,执行some-custom-attribute="model.someArray[${i}]"会让Aurelia认为您正在尝试将字符串值传递给自定义属性。你可以在下面的要点中看到:https://gist.run/?id=eed8ac8623ff4749aa5bb93c82a7b1fb我创建了一个自定义元素,它只是将给定的值推送到页面上的元素。 注意!不要做我在这里做的事情! 我这样做就是这样,所以你不必打开js控制台。要实际获取传入的值,您需要使用some-custom-attribute.bind="item"或(为了做事情,some-custom-attribute.bind="someArray[i]"