Каков наилучший подход для отслеживания любых изменений в модели в аурелии?
У меня есть простое требование. Давайте возьмем пример
Пример 1: В окне "Мой вид" у меня есть два поля ввода "Имя" и "Фамилия" и одна кнопка "Отправить" для сохранения имени и фамилии. Теперь я хочу, чтобы кнопка "Отправить" была включена только при изменении имени и фамилии.
Пример 2: В Моем обзоре у меня есть два поля ввода: Имя и Фамилия и одна кнопка для сохранения имени и Фамилии. Теперь здесь имя и фамилия, имеющие значение из моей view-модели. если я изменю что-либо на имя и фамилию, моя кнопка отправки будет активирована, теперь снова, если я добавлю предыдущее значение для имени и фамилии, моя кнопка отправки будет отключена.
<template>
<form role="form" submit.delegate="SaveDetail()" validate.bind="validation">
<div class="form-group">
<label>First Name</label>
<input type="text" value.bind="firstName" class="form-control">
</div>
<button class="btn btn-success" type="submit" disabled.bind="!validation.result.isValid">save</button>
</form>
</template>
import {inject} from 'aurelia-framework';
import {Validation} from 'aurelia-validation';
@inject(Validation)
export class ChildRouter {
firstName: string = 'pranay';
validation;
constructor(Validation) {
var self = this;
self.validation = Validation.on(self)
.ensure('firstName')
.isNotEmpty()
.hasMinLength(3)
.hasMaxLength(10)
.isNotEqualTo(self.firstName);
}
SaveDetail() {
var self = this;
self.validation.validate()
.then(() => {
alert(self.firstName);
});
}
}
Пожалуйста, дайте мне знать лучший подход для этого типа сценария.
1 ответ
Попробуйте отследить "грязные" значения с помощью правила проверки isNotEqualTo(oldValue) и просто проверить, верен ли результат.
<button disabled.bind="validation.result.isValid"></button>
ОБНОВЛЕНИЕ: Но когда модель обновляется, как и после сохранения, объект валидации также должен быть повторно инициализирован. Также для более ранних версий было рекомендовано позвонить this.formValidation.destroy();
, не уверен, если это нужно сейчас.