2016-12-07 13 views
1

有沒有任何理由說明repeat.for綁定會從中繼器內的元素中刪除屬性?Aurelia在重複中不輸出帶字符串插值的屬性

<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,因此這裏的目標是將索引的文本值轉換爲文本屬性值。

回答

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]"

+0

即使這不是我的問題,我瞭解了有關'$ index'屬性。很好的回答! – LStarky

+0

是的,我實際上已經知道在一個數字上迭代是可行的,但我不知道,這就是說,我展示的方式是你應該如何實現這一點,我將研究爲什麼自定義屬性不會'因爲基本上你在代碼中傳遞一個字符串 –

+0

只是爲了確認這不是一個自定義的aurelia屬性,它只是一個第三方JS庫使用的html屬性,我只是想將它傳遞給它的值'someArray [0]'0被替換爲當前索引,我不想傳入那裏的實際元素,如果可以使用$ index而不是'i'我可以使用它,但我基本上不希望aurelia在這裏做任何事情,除了使'some-custom-attribute'值爲文本'someArray [0]'。此外,重複對其他部分也如預期的那樣工作,所以它重複'n'次,但我同意它看起來更像foreach風格的東西。 – Grofit