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

Я использую форму регистрации, и когда я нажимаю кнопку "Отправить", я хочу отключить текстовое поле с помощью Knockout.

Я пробовал следующее:

var viewModel = {
    Textboxcontrol: ko.observable(true), // by default textbox is enable to edit
    Register: {
        Init: function () {
        Textboxcontrol= false; // Updating the value to false 
                               // so Textbox should be disabled.
    }
};

ko.applyBindings(viewModel);

На UI я написал следующее

<input  data-bind="value: Name, enable: Textboxcontrol" 
        type="text" autocomplete="off" />

Но проблема в том, если я изменю значение на Textboxcontrol= false; также его значение как True только.. и текстовые поля не отключаются.

1 ответ

Решение

Поскольку Textboxcontrol является наблюдаемым, вы должны изменить его значение, вызвав его как функцию. Кроме того, вы должны использовать this чтобы получить доступ к свойству Textboxcontrol внутри функции "Init":

var viewModel = {
  Name: ko.observable(''),
  Textboxcontrol: ko.observable(true),
  Register: {
    Init: function () {
      this.Textboxcontrol(false);
    }
  }
};
ko.applyBindings(viewModel);
Другие вопросы по тегам