Каков наилучший подход для отслеживания любых изменений в модели в аурелии?

У меня есть простое требование. Давайте возьмем пример

Пример 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();, не уверен, если это нужно сейчас.

Другие вопросы по тегам