Knockout JS Computed Observable也需要用户输入

时间:2017-02-03 21:40:36

标签: knockout.js observable

我正在使用Knockout和MVC Core Web应用程序。在我的UI中,我有几个输入文本字段。例如FirstName,LastName和FullName。

我将FullName作为计算的observable。这是我的问题。   情况1:基于某些条件,我想使用FirstName和LastName数据来计算FullName。 (这是示例中显示的常见情况)。

案例2:根据某些条件,我想阅读用户可以在FullName文本字段中输入的输入。有人可以帮助我如何实现这一目标。

  function AppViewModel() {
this.firstName = ko.observable('Bob');
this.lastName = ko.observable('Smith');

if(somecondition)
this.fullName = ko.computed(function() {
    return this.firstName() + " " + this.lastName();
} else {
    return somevalueEnterned in the text box

},这个); }

1 个答案:

答案 0 :(得分:1)

没有理由你不能把你的逻辑放入计算本身。对文本框绑定使用单独的observable,然后根据您的条件返回一个或另一个。

function AppViewModel() {
  this.firstName = ko.observable('Bob');
  this.lastName = ko.observable('Smith');
  this.textBoxValue = ko.observable('');

  this.fullName = ko.computed(function() {
    if(somecondition)
      return this.firstName() + " " + this.lastName();
    } else {
      return this.textBoxValue();
    }
  }, this);

}