0

这是 jsFiddle 上的一个示例。

我有一些带有 Knockout 绑定的 HTML,可以将值显示x为 an 的值和标签input中的文本。p

<p data-bind="text: x"></p>
<p><input id="x" data-bind="attr: {value: x}"></p>
<button id="update">Update</button>

我想要做的是在input按下更新按钮时取值,将其四舍五入到最接近的整数,并让它在两个地方都显示这个四舍五入的值。我试过这个:

var vm = {
    x: ko.observable(1)
};

ko.applyBindings(vm);

$('#update').click(function () {
    vm.x(Math.round($('#x').val()));
});

这里又是 jsFiddle 链接。

1当你加载它时,两个地方都会显示的初始值。如果更改inputto中的值2并单击“更新”按钮,那么两个地方都会显示2。精彩的。这适用于任何整数。

现在尝试一些不是整数的东西。输入5.3并按“更新”。p正确更新显示,5input仍然显示5.3

一些进一步的调查似乎表明 Knockout 很乐意更新 ,input直到我手动编辑 中的值input,此时它停止对input. 我可以理解为什么在某些情况下这可能是可取的,以防止用户输入被覆盖......但这不是我想要的行为。更新视图模型时,如何让它更新两个显示的值?

4

1 回答 1

2

如果你改变你的小提琴来使用data-bind="value: x"data-bind="attr: {value: x}",它将完美地工作。

于 2013-04-15T04:01:13.407 回答