如何停止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 计算绑定表达式时调用的(或者我假设如此)。它会在页面加载时添加一个空行。
如何阻止这种情况发生?
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/
我正在学习 Knockout JS 并遵循他们的在线交互式教程。
我有一个添加新预订的按钮。
<button data-bind="click: addSeat($('#passenger-name').val(), $('#selected-meal').val()), enable: seats().length < 5">Reserve another seat</button>
但是问题是 addSeat
函数最初是在 Knockout 计算绑定表达式时调用的(或者我假设如此)。它会在页面加载时添加一个空行。
如何阻止这种情况发生?
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/