我得到一个只在 IE 中发生的“SCRIPT5002:预期功能”。我目前正在针对版本 9 进行测试。当我在另一个计算的 observable 中使用先前定义的计算 observable 时会发生这种情况。
我的应用程序比这复杂一点,所以我用下面更简单的代码重现了错误。z = self.subtotal();当您在数字 1、数字 2 和数字 3 中输入数字时,错误发生在行上(并用制表符列出)。
这个错误在 Chrome 或 Firefox 中不会发生,我已经用谷歌搜索了很长一段时间。希望有人能帮我解开。
这是 jsfiddle 的链接:http: //jsfiddle.net/kCmTg/
这是javascript:
    function putVars() {
    self = this;
    self.number1 = ko.observable();
    self.number2 = ko.observable();
    self.subtotal = ko.computed(function () {
        return parseFloat(self.number1()) + parseFloat(self.number2());
    }, self, { deferEvaluation: true });
    self.number3 = ko.observable();
    self.number4 = ko.observable();
    self.total = ko.computed(function () {
        var x, y, z;
        x = self.number3();
        y = self.number4();
        z = self.subtotal();
        return parseFloat(x) + parseFloat(y) + parseFloat(z);
    }, self, { deferEvaluation: true });
}
$(function () {
    ko.applyBindings(new putVars());
});
这是html:
    <h4>Calc 1</h4>
<label for="Number1">Number 1: </label><input id="Number1" type="text" data-bind="value: number1" />
<label for="Number2">Number 2: </label><input id="Number2" type="text" data-bind="value: number2" />
<label for="Subtotal"><b>Subtotal: </b></label><input id="Subtotal" type="text" data-bind="value: subtotal" readonly="readonly" />
<hr />
<h4>Calc 2</h4>
<label for="Number3">Number 3: </label><input id="Number3" type="text" data-bind="value: number3" />
<label for="Number4">Number 4: </label><input id="Number4" type="text" data-bind="value: number4" />
<label for="Total"><b>Total:</b> </label><input id="Total" type="text" readonly="readonly" data-bind="value: total" />