Javascript 如何避免在页面加载时调用敲除绑定?

Javascript 如何避免在页面加载时调用敲除绑定?,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,我有一个淘汰的viewmodel,它有一个名为updatePrices的计算函数。除非用户在“我的表”中切换复选框,否则永远不应调用此方法 该表由foreach数据绑定生成 我目前的经验是,当用户切换复选框时,updatePrices方法被调用,用于页面加载时表中的每一行。我期望的行为是,当我切换复选框时,它只调用updatePrices,而不是在页面加载时 因此,我基本上希望避免在页面加载时调用这些方法。我该怎么做 我的html标记: <tbody data-bind="foreach:

我有一个淘汰的viewmodel,它有一个名为
updatePrices
的计算函数。除非用户在“我的表”中切换复选框,否则永远不应调用此方法

该表由
foreach
数据绑定生成

我目前的经验是,当用户切换复选框时,
updatePrices
方法被调用,用于页面加载时表中的每一行。我期望的行为是,当我切换复选框时,它只调用
updatePrices
,而不是在页面加载时

因此,我基本上希望避免在页面加载时调用这些方法。我该怎么做

我的html标记:

<tbody data-bind="foreach: invoices">
    <tr>
        <td>
            <input type="checkbox" data-bind="checked: print, click:updatePrices()" />
        </td>
        <td data-bind="text: invoiceDate"></td>
        <td data-bind="text: customerName"></td>
        <td data-bind="text: amount"></td>
        <td>
            <a data-bind="attr: { href: pdfLink }">Download</a>
        </td>
        <td data-bind="text: status"></td>
    </tr>
</tbody>

首先,不需要使updatePrices可计算,因为它不返回任何值,也不依赖于任何其他视图模型变量

其次,click的数据绑定不正确,因为您正在立即调用该函数。您的数据绑定应如下所示:

 <input type="checkbox" data-bind="checked: print, click:updatePrices" />

首先,不需要使updatePrices可计算,因为它不返回任何值,也不依赖任何其他视图模型变量

其次,click的数据绑定不正确,因为您正在立即调用该函数。您的数据绑定应如下所示:

 <input type="checkbox" data-bind="checked: print, click:updatePrices" />


我认为您在那里没有使用计算函数。用户操作时,您正在从服务器获取数据。所以,当页面从服务器加载或在用户事件g上加载数据时?也许,我对Knockout很陌生:),但当我调用它时,我认为它是一个计算函数,就像我的任何模型都有一个ko.computed函数一样?当你们使用计算函数时,每当这个计算函数中的任何可观测值发生变化时,你们的计算函数都会被计算出来。当您需要对可观察对象进行一些计算和转换时,应该使用computed函数。你们为什么首先使用计算函数?可能是因为我还不太了解敲除。但是如果我去掉ko.computed,只使用一个函数,也会发生同样的情况。你知道为什么吗?我想你不用计算函数。用户操作时,您正在从服务器获取数据。所以,当页面从服务器加载或在用户事件g上加载数据时?也许,我对Knockout很陌生:),但当我调用它时,我认为它是一个计算函数,就像我的任何模型都有一个ko.computed函数一样?当你们使用计算函数时,每当这个计算函数中的任何可观测值发生变化时,你们的计算函数都会被计算出来。当您需要对可观察对象进行一些计算和转换时,应该使用computed函数。你们为什么首先使用计算函数?可能是因为我还不太了解敲除。但是如果我去掉ko.computed,只使用一个函数,也会发生同样的情况。知道为什么吗?非常感谢你的努力!现在我的复选框坏了,但这可能是其他错误;)我去拿。谢谢&周日好!非常感谢你的努力!现在我的复选框坏了,但这可能是其他错误;)我去拿。谢谢&周日好!