自定义绑定处理程序不触发

时间:2013-12-09 00:41:41

标签: knockout.js knockout-mapping-plugin ko-custom-binding

尝试创建我的第一个自定义绑定处理程序:

<input data-bind="value:firstName,valueUpdate:'afterkeydown'" type="text" />
<button data-bind="myhandler: firstName" ></button>

ko.bindingHandlers.myhandler =
    {
        update: function (element, valueAccessor) {
            var value = ko.utils.unwrapObservable(valueAccessor);
            $(element).css("background", "red");
            console.log('update');
        }
    }

var vm = function () {
    this.firstName = ko.observable('bert');
}

ko.applyBindings(new vm());

问题是,当我更新值时,它不会触发'更新'。我只是在启动时被触发?这是jsfiddle链接: http://jsfiddle.net/dingen2010/c43hu/2/

1 个答案:

答案 0 :(得分:2)

您需要使用值访问器上的getter来订阅值更改 -

http://jsfiddle.net/c43hu/3/

var value = ko.utils.unwrapObservable(valueAccessor());