我正在嘗試構建一個自定義元素來管理簡單列表,重命名項目並更改其順序。不幸的是,我注意到一些奇怪的行爲,實際上很難確定。在Aurelia中更改數組順序,怪異行爲
- 鍵入到輸入似乎沒有被識別爲改變用於奧裏利亞更新項目
- 當輸入/改變頁面加載之後的一個項,並且然後經由這些方法改變陣列的位置,的指數該項目似乎丟失(變成-1)。如果項目沒有通過輸入字段更改,則數組中的索引被正確識別並進行排序。
是否有任何已知的問題數組,綁定,甚至可能是子元素?爲了獲得理想的行爲,接受測試的測試是什麼?非常感謝!
父元素
...
<list items.bind="list"></list>
...
列表元素
<template>
<div class="input-group" repeat.for="item of items">
<input value.bind="item" class="input" type="text" placeholder="Item" autofocus>
<a click.delegate="deleteItem(item)">X</a>
<a click.delegate="moveItemUp(item)">^</a>
<a click.delegate="moveItemDown(item)">v</a>
</div>
<a click.delegate="addItem()">Add Item</a>
名單JS
export class List {
@bindable({defaultBindingMode: bindingMode.twoWay}) items;
constructor() {}
addItem() {
this.items.push('new')
}
deleteItem(item) {
let i = this.items.indexOf(item)
this.items.splice(i, 1)
}
moveItemUp(item) {
let i = this.items.indexOf(item)
if (i === 0) return
let temp = item
this.items.splice(i, 1)
this.items.splice(i - 1, 0, temp)
}
moveItemDown(item) {
let i = this.items.indexOf(item)
if (i === this.items.length) return
let temp = item
this.items.splice(i, 1)
this.items.splice(i, 0, temp)
}
}