здесь есть подписка?
я есть странный случай в шаблоне элементов Aurelia с if.bind внутри repeat.for не показывается / скрывается, когда изменяется их базовое свойство. С помощью следующего кода поля редактирования должны отображаться, а кнопка редактирования должна быть скрыта, как только будет нажата кнопка редактирования. Впоследствии кнопки сохранения и отмены должны скрыть поля редактирования и снова отобразить кнопки редактирования.
MyList.ts:
import { computedFrom } from "aurelia-binding";
export class MyList
{
items: any[] = [{
"firstName": "Joe",
"lastName" : "Blow",
"id": 1
},
{
"firstName": "Jane",
"lastName" : "Doe",
"id": 2
}
]
editingItem: any = null
isEditing: boolean;
edit(item){
this.editingItem = item;
this.isEditing = true;
}
editFirst(item){
this.editingItem = this.items[0];
this.isEditing = true;
}
undo(){
// undo logic here
this.editingItem = null;
this.isEditing = false;
}
save(){
// Save logic here
this.editingItem = null;
this.isEditing = false;
}
}
MyList.html:
<template>
<table>
<tbody>
<tr repeat.for="item of items">
<td if.bind="!isEditing">
<button click.delegate="edit(item)">Edit</button>
</td>
<td>${item.firstName}</td>
<td>${item.lastName}</td>
<td if.bind="isEditing && editingItem.id == item.id">
<button click.delegate="save()">Save</button>
<button click.delegate="undo()">Undo</button>
<input value.bind="editingItem.firstName" />
<input value.bind="editingItem.lastName" />
</td>
</tr>
</tbody>
</table>
</template>
Нажатие на кнопку редактирования ничего не делает. Интересно, если я добавлю
${isEditing}
В любом месте шаблона за пределами repeat.for код работает как положено. Как будто движок рендеринга не знает, как перерисовать элементы внутри цикла повторения.
Это ошибка? Или я что-то делаю глупо?