gpt4 book ai didi

javascript - Aurelia 绑定(bind) - 单击按钮返回查看模型

转载 作者:行者123 更新时间:2023-11-29 16:07:36 24 4
gpt4 key购买 nike

在 Aurelia 应用程序中,我有一个带有单个输入的“重命名”表单

<input ... value.bind="something.name" />

和两个按钮:SaveCancel

相同的 something 对象已在其他控件中使用。因此,在单击 Save 按钮之前,我不希望更改 name

是否有一个很好的声明方式来完成它,或者我是否必须将 name 复制到另一个属性,然后在 Save 触发器上将其复制回来?

最佳答案

您可以为您的编辑弹出窗口创建一个模型对象,并且仅在单击保存 时复制对列表中的项目所做的编辑。这是一个简化的示例:https://gist.run/?id=af3af031c5acc4c46407679f5ab1376b

查看

<template>
<ul>
<li repeat.for="person of people">${person.firstName} ${person.lastName} <button click.delegate="editPerson(person)">Edit</button></li>
</ul>
<div if.bind="editing">
First Name: <input type="name" value.bind="editModel.firstName" />
Last Name: <input type="name" value.bind="editModel.lastName" />
<button click.delegate="savePerson()">Save</button>
<button click.delegate="cancelEdit()">Cancel</button>
</div>
</template>

View 模型

export class App {
editing = false;
people = [
{ firstName: 'John', lastName: 'Doe' },
{ firstName: 'Jane', lastName: 'Smith' },
{ firstName: 'Bob', lastName: 'Smith' }
];

editPerson(person) {
this.editing = true;
this.editObject = person;
this.editModel = Object.assign({},person);
}
savePerson() {
this.editing = false;

Object.assign(this.editObject, this.editModel);

this.editObject = null;
this.editModel = null;
}

cancelEdit() {
this.personBeingEdited = null;
this.editing = false;
}
}

关于javascript - Aurelia 绑定(bind) - 单击按钮返回查看模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37171766/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com