格式货币淘汰赛绑定

时间:2013-07-29 23:30:13

标签: knockout.js bindinghandlers

无法让我的自定义bindingHandlers工作。货币在加载时不会格式化,但在文本框中输入值时会进行格式化。我需要它在加载时格式化。

我正在使用此工具:Format Currency

ko.bindingHandlers.currency = {
    init: function (element, valueAccessor) {
        //initialize datepicker with some optional options
        $(element).formatCurrency({ roundToDecimalPlace: 0 });

        //handle the field changing
        ko.utils.registerEventHandler(element, "blur", function () {
            var observable = valueAccessor();
            observable($(element).formatCurrency({ roundToDecimalPlace: 0 }));
        });

    },
    update: function (element, valueAccessor) {
        var value = ko.utils.unwrapObservable(valueAccessor());
        ko.bindingHandlers.text.update(element, function () { return value; });
        $(element).formatCurrency({ roundToDecimalPlace: 0 });
    }
};

1 个答案:

答案 0 :(得分:0)

我认为它没有在加载时更新的原因是因为您正在设置文本而不是适合文本框(输入)的值。这是我的更新"看起来像:

update: function (element, valueAccessor) {
        var value = ko.utils.unwrapObservable(valueAccessor());

        if($(element).is("input")) {
            $(element).val(value);
        }
        else {
            $(element).text(value);
        }

        $(element).formatCurrency();


    }