繁体   English   中英

淘汰赛可写的计算观测值

[英]Knockout writable computed observables

我目前正在使用Knockout构建一个非常繁琐的应用程序,并且遇到了使可计算的可写可写问题。

目前,我有一个下拉选项,用户可以选择一个年龄组,然后从中选择值填充其旁边的文本输入,以显示该年龄组的人口(可计算得出)。 下拉列表和文本输入值均从数组中填充。

我在下面设置了一个代码笔,但是基本上您会看到,文本输入的值是通过计算的可观察值生成的,并且当您从下拉列表中选择一个值时,将应用正确的格式(通过自定义绑定处理程序!)。

我遇到的问题是,如果您在文本输入中输入自定义值(直接输入到文本框中,而不是从下拉列表中选择一个值),那么当您模糊出文本框时,则不会应用自定义格式到您输入的值,我不确定如何解决此问题。

self.selectedPopulation = ko.computed({

    read: function () {
      return self.chosenAge().population;
    },

    write: function (value) {
      // write value back here?
    },

  });

Codepen: http ://codepen.io/anon/pen/HkguL(写入功能位于第76行。)

您需要使selectedPopulation成为正常可观察的对象,并订阅selectedAge可观察的对象,以便在其更改时得到通知。

您将需要创建一个带有虚拟对象的selectedAge,以防止在绑定时出现剔除:

self.chosenAge = ko.observable({age: '', population: ''});

然后将您的计算值更改为可观察值:

// Selected population
self.selectedPopulation = ko.observable('');

并订阅selectedAge可观察:

self.chosenAge.subscribe(function (newValue) {
    self.selectedPopulation(newValue.population);
});

以前我没有使用CodePen,但是我在这里更新了您的代码,以防万一我在工作示例中遗漏任何东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM