How to make purecomputed observables writable?

时间:2015-09-14 16:14:58

标签: javascript knockout.js

Given this code:

self.loanResult = ko.pureComputed(function () {
    var result = (self.loanAmount() / self.loanCount());
    return result;
});

As you can see loadResult is a Pure computed observable. It works fine, so that whenever loanAmount and loanCount change the result displays immediatly in loanResult.

<p>
    Loan amount <input data-bind="value: loanAmount, valueUpdate:'afterkeydown'">
</p>
<p>
    Loan count <input data-bind="value: loanCount, valueUpdate:'afterkeydown'">
</p>
<p>
    Loan result <input data-bind="value: loanResult, valueUpdate:'afterkeydown'">
</p>
<p>
    <span id="alert" class="label label-info" data-bind="text: loanAlert"></span>
</p>

Now assume that user wants to change loanResult, I want to bind another property based on some conditions to loanAlert, So I created another Pure computed observable, But when I change the loanResult nothing happens:

self.loanAlert = ko.pureComputed(function () {
    var result = self.loanResult() * self.loanCount();
    if (result >= data) {
        return "Yes";
    }
    return "No";
});

1 个答案:

答案 0 :(得分:3)

谢谢@James,实际上我并不了解Writable computed observables。所以正如詹姆斯所说,我应该使用可写的计算可观察量:

{{1}}