如何停止knockout js绑定的初始评估?

How to stop the initial evaluation of knockout js binding?

我正在学习 Knockout JS 并遵循他们的在线交互式教程。

我有一个添加新预订的按钮。

<button data-bind="click: addSeat($('#passenger-name').val(), $('#selected-meal').val()), enable: seats().length < 5">Reserve another seat</button>

但是问题是 addSeat 函数最初是在 Knockout 计算绑定表达式时调用的(或者我假设如此)。它会在页面加载时添加一个空行。

如何阻止这种情况发生?

Find the example over here

addSeat 函数被调用是因为您在绑定中调用了它。单击绑定期望接收对函数的引用,而不是应调用的代码。因此,为了进行所需的调用,您必须将其包装在函数中。

<button data-bind="click: function () { addSeat($('#passenger-name').val(), $('#selected-meal').val()); }, enable: seats().length < 5">Reserve another seat</button>

这里是更新的例子:http://jsfiddle.net/9kk0haga/

但在您的情况下,更好的解决方案是替换 jQuery 代码以使用敲除绑定:http://jsfiddle.net/9kk0haga/1/