1

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

我正在使用这个工具:格式化货币

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 });
    }
};
4

1 回答 1

0

我认为它在加载时不更新的原因是因为您正在设置文本而不是适合文本框(输入)的值。这是我的“更新”的样子:

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

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

        $(element).formatCurrency();


    }
于 2014-04-09T15:36:06.637 回答