knockout.js - 自定义绑定(bind) valueAccessor 有意外结果

标签 knockout.js ko-custom-binding

我对 knockout.js 自定义绑定(bind)中的以下行为感到困惑:

ko.bindingHandlers.customBinding = {
    update: function(element, valueAccessor, allBindingsAccessor) {
        var value = ko.utils.unwrapObservable(valueAccessor());
        console.log( JSON.stringify(value) );
    }
}

ko.applyBindings({
    someText: ko.observable("inital value")
});

<input type="text" data-bind="value: someText, customBinding: {some: 'option'}">

valueAccessor()应该给我绑定(bind)到元素值的 View 模型属性(即可观察的someText) 。引用文档:

valueAccessor — A JavaScript function that you can call to get the current model property that is involved in this binding. Call this without passing any parameters (i.e., call valueAccessor()) to get the current model property value.

但是,它真正所做的是返回绑定(bind)值,即{some: 'option'}

我错过了什么?

参见http://jsfiddle.net/j5y8H/

最佳答案

您需要在自定义绑定(bind)调用中传递您想要的 valueAccessor 模型属性。在您的情况下,您需要模型属性“someText”:

<input type="text" data-bind="value: someText, customBinding: someText">

参见http://jsfiddle.net/j5y8H/1/

关于knockout.js - 自定义绑定(bind) valueAccessor 有意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15545547/

相关文章:

javascript - 光滑 js 的 knockout 自定义绑定(bind)不起作用

javascript - knockout observableArray 不更新表

javascript - 从可观察数组中获取对象

knockout.js - 什么是 Knockout 自定义绑定(bind) "after"变量?

knockout.js - 自定义绑定(bind),带有绑定(bind)和 init - knockout.js

knockout.js - 自定义绑定(bind)处理程序,从字符串模板呈现绑定(bind)

javascript - 仅当 KnockoutJS 中的 0 或 null 不同时才启用

asp.net-mvc - 下拉列表未填充 KnockoutJS 和 Ajax

knockout.js - knockout 自定义绑定(bind)处理程序