javascript - 第二个计算函数导致 Knockout 代码出错

标签 javascript knockout.js

下面的 Knockout 代码应用了使用可观察值和计算可观察值跟踪两个文本框的值。

标记:

GBP:
<input type="textbox" data-bind="value: sendGbp" />
<br />
Exchange Rate: £1 GBP 
<br />
<input type="textbox" data-bind="value: sendFx" />

Javascript:

var transferItem = {
    receiveCurrencyCode : "JPY",
    exchangeRate : 123.223122
}

function viewModel(item) {

    var self = this;

    var initval = parseFloat(100).toFixed(2);
    self.sendGbp = ko.observable(initval);

    /** commented out error source
    self.labelFxRate = ko.computed(function() {
        return exchangeRate + " " + item.receiveCurrencyCode;
    });    
    **/

    self.sendFx = ko.computed({
        read: function () {
            return parseFloat(self.sendGbp() * item.exchangeRate).toFixed(2);
        },
        write: function (val) {
            var valGbp = parseFloat(val);
            self.sendGbp((valGbp / item.exchangeRate).toFixed(2));
        }
    });
}
ko.applyBindings(new viewModel(transferItem));

这工作正常,直到我想添加另一个计算的可观察对象来显示

这涉及注释掉 viewModel 代码中的部分并将此数据绑定(bind)标签添加到标记中:

Exchange Rate: £1 GBP  = <label data-bind="text: labelFxRate" />

但这会导致错误并且标记无法完全呈现

应用第二个计算变量来显示 transferItem 对象的附加属性的正确方法是什么?

jsfiddle 上有一个完整的正在进行的版本:http://jsfiddle.net/WuvZD/3/

最佳答案

看来您不能对标签使用自闭合标签。 同样在您注释掉的代码中,您使用了 return exchangeRate 但它应该是 return item.exchangeRate?

更新 fiddle :http://jsfiddle.net/WuvZD/4/

关于javascript - 第二个计算函数导致 Knockout 代码出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21033432/

相关文章:

javascript - 倾斜段落中的文本

javascript - Angular 2 - 带有 Assets 的网址

javascript - knockout "with"绑定(bind)、级联下拉、重新加载选定值不起作用

jquery - KnockoutJS 和 $.ajax - firebug 不会在成功回调内的断点处停止

php - Yii 和 Knockout 一起?

jquery - 如何使用 knockout 映射插件添加新的匿名项目

javascript - 在 View 中使用正则表达式

javascript - 通过 JS 覆盖转换后的 CSS 属性会使转换停止工作

javascript - 使用 Knockoutjs 绑定(bind)始终在第一个位置添加一条记录

javascript - 自定义绑定(bind) (knockout.js) 以根据其他 <select> 更新 <select>