KO 自定义绑定 writeValueToProperty 失败



我正在尝试为特殊数字格式创建自定义绑定。

    ko.bindingHandlers['valueTest'] = {
        'init': function (element, valueAccessor, allBindingsAccessor) {
            var valueUpdateHandler = function () {
                var modelValue = valueAccessor();
                var elementValue = ko.selectExtensions.readValue(element);
                ko.expressionRewriting.writeValueToProperty(modelValue, allBindingsAccessor, 'value', elementValue);
            }
            ko.utils.registerEventHandler(element, "change", valueUpdateHandler);
        },
        'update': function (element, valueAccessor) {
            var newValue = ko.utils.unwrapObservable(valueAccessor());
            var elementValue = ko.selectExtensions.readValue(element);
            if (newValue !== elementValue) {
                ko.selectExtensions.writeValue(element, newValue.toFixed(2).replace(".", ","));
            }
        }
    }; 

也可在小提琴 http://jsfiddle.net/PAFTR/11/上提供

但它在更新时失败(firebug 说:TypeError: ko.expressionRewrite.writeValueToProperty 不是一个函数)。

看起来这更适合可观察的扩展器?检查我做的这个小提琴

http://jsfiddle.net/yEgmt/

它的使用方式像

this.number = ko.observable().extend({ numeric: true })

最新更新