KO自定义绑定writeValueToProperty失败

时间:2012-11-26 12:51:18

标签: knockout.js ko-custom-binding

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

    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.expressionRewriting.writeValueToProperty不是函数)。

1 个答案:

答案 0 :(得分:2)

看起来这更适合于可观察的扩展器? 检查这个小提琴我已经完成了

http://jsfiddle.net/yEgmt/

用得像

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