如何使用Knockout的observable动态禁用文本框?

时间:2014-05-21 03:11:42

标签: knockout.js knockout-mapping-plugin knockout-validation knockout-mvc

我正在实施注册表单,当我点击提交按钮时,我想使用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 个答案:

答案 0 :(得分:2)

由于Textboxcontrol是一个可观察的,因此必须通过将其作为函数调用来更改其值。另外,您必须使用this访问“Init”函数中的Textboxcontrol属性:

var viewModel = {
  Name: ko.observable(''),
  Textboxcontrol: ko.observable(true),
  Register: {
    Init: function () {
      this.Textboxcontrol(false);
    }
  }
};
ko.applyBindings(viewModel);