【发布时间】:2014-08-28 01:17:48
【问题描述】:
我目前正在使用 Knockout 构建一个数量非常多的应用程序,但我遇到了使计算出的 observable 可写的问题。
目前我有一个下拉选项,用户可以在其中选择一个年龄组,从中选择的值会填充它旁边的文本输入,以显示该年龄组的人口,这是一个计算出的 observable。下拉列表和文本输入值都是从数组中填充的。
我已经在下面设置了一个 codepen,但基本上你会看到文本输入的值是通过计算的 observable 生成的,并且当你从下拉列表中选择一个值时会应用正确的格式(通过自定义绑定处理程序!)。
我遇到的问题是,如果您在文本输入中输入自定义值(直接输入到文本框中,而不是从下拉列表中选择一个值),那么当您模糊文本框时,自定义格式是'没有应用于您输入的值,我很不确定如何解决这个问题。
self.selectedPopulation = ko.computed({
read: function () {
return self.chosenAge().population;
},
write: function (value) {
// write value back here?
},
});
代码笔:http://codepen.io/anon/pen/HkguL (写函数在第 76 行。)
【问题讨论】:
-
这并不能直接回答您提出的问题;但我认为自定义绑定处理程序是解决格式问题的错误方法。我通常会将未格式化的数据存储在可观察的数据中,并进行只读计算,以添加仅用于显示的格式。如果他们需要编辑一个数字,我认为编辑框中不应该有逗号。即使您确实让他们通过读写进行编辑,我仍然看不到自定义绑定的必要性。
标签: javascript knockout.js knockout-2.0