Torakami Ответов: 1

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


Привет ,

У меня есть scnerio где я хочу сделать одно поле вычисленным наблюдаемым если флажок установлен если нет то что пользователь записывает в него что должно храниться в этом поле

Адрес 1 :-
Адрес 2 :-

Флажок: - такой же, как и выше

Почтовый адрес :-

теперь вот что я хочу сделать: если флажок установлен, то то, что ввел пользователь, должно быть таким же, как и выше. Если нет, то пользователь может ввести другой почтовый адрес

Что я уже пробовал:

//clientViewModel.client_mailingAddress = ko. computed(функция () {
// если (clientViewModel.client_isMailingAddressReadOnly()) {
// возврат clientViewModel.client_AddressLine1() + '' + clientViewModel.client_AddressLine2() + '' + clientViewModel.client_AddressLine3()
// }
//});

здесь флажок работает perfctl, но теперь, когда флажок не установлен, и если я ввожу что-то для своего симулирующего адреса, который принимает его как неопределенный..

1 Ответов

Рейтинг:
6

Torakami

Если вы хотите сделать свой вычисленный наблюдаемый объект доступным для записи, то вы должны использовать purecomputed , он работает так же, но только differnce здесь вы также получаете доступ к записи

chemistViewModel.chemist_mailingAddress = ko.pureComputed({
        read: function () {
            if (chemistViewModel.chemist_isMailingAddressReadOnly()) {
                var updatedAddress = chemistViewModel.chemist_AddressLine1() + ' ' + chemistViewModel.chemist_AddressLine2() + ' ' + chemistViewModel.chemist_AddressLine3();
                return updatedAddress;
            }
            else {
                var updatedAddress = chemistViewModel.chemist_mailingAddressWritable();
                return updatedAddress;
            }
        },
        write: function (value) {
            if (!chemistViewModel.chemist_isMailingAddressReadOnly()) {
                chemistViewModel.chemist_mailingAddressWritable(value);
            }
        },
        owner: this
    });