Может быть несколько стратегий для решения этой проблемы.Здесь важнее всего то, что вы хотите сделать после того, как пользователь нажмет «Отмена».Например, если вы хотите сделать перенаправление, вам не нужно ничего делать для восстановления значений.Это имеет смысл с точки зрения удобства использования.
Однако, если контекст представления требует того же представления со старыми значениями, прямой способ - восстановить снимок.Допустим, модель, которую вы связываете с представлением, имеет следующую схему.
model: { varA: anyType, varB: anyType }
И вы связываете ее следующим образом.
<input name="testA" value.bind="model.varA">
<input name="testB" value.bind="model.varB">
Тогда вы можете просто сохранить снимок оригиналасмоделируйте и восстановите его позже следующим образом.
//save the snapshot
this.snapshot = JSON.parse(JSON.stringify(this.model))
//....
// restore the snapshot when user clicks cancel
this.model = this.snapshot
А об остальных должны позаботиться уже существующие привязки.Обратите внимание, что здесь предполагается, что model
является просто необработанным контейнером данных и не предлагает никаких функциональных возможностей (не является экземпляром какого-либо определенного пользователем класса, который предлагает дополнительные методы и т. Д .; в этом случае вам необходимо восстановить прототип какхорошо).
Если вы хотите «отменить» действие, а не «отменить», и если вы уже используете aurelia-store
, тогда отметьте здесь .
Надеждаэто помогает.