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

时间:2015-02-01 07:30:56

标签: javascript knockout.js

我正在学习Knockout JS并关注他们的在线互动教程。

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

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

然而问题是当Knockout评估绑定表达式时(或者我假设),最初会调用addSeat函数。它在页面加载时添加一个空行。

如何阻止这种情况发生?

Find the example over here

1 个答案:

答案 0 :(得分:2)

调用函数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代码以使用knockout绑定:http://jsfiddle.net/9kk0haga/1/