试图理解Knockout.js自定义绑定

时间:2013-09-18 19:33:28

标签: jquery knockout.js

所以我正在使用Knockout Custom Bindings,我有以下代码:

<input type="radio" class="radio" data-bind="custombind: custombind"/>
<input type="text" class="text" data-bind="custombind: custombind"/>

- JS -

var viewModel = {
        custombind: ko.observable(true)
    };
    ko.applyBindings(viewModel);

ko.bindingHandlers.custombind = {
    init: function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) 
    {
        alert($(element).attr('class'));
    }
}

也许我误解了自定义绑定是如何工作的,但我希望这会返回带有“ custombind ”数据绑定的任何元素的类名。目前似乎没有任何事情发生。任何关于我出错的建议都将不胜感激。感谢

- 小提琴 -

http://jsfiddle.net/tU4Fg/16/

- 的参考 -

http://knockoutjs.com/documentation/custom-bindings.html

1 个答案:

答案 0 :(得分:1)

尽管文档中没有明确说明,但是在调用ko.applyBindings之前,应该定义所有自定义绑定

否则KO在解析data-bind属性时将不知道如何处理自定义绑定。

所以下面的代码工作正常:

ko.bindingHandlers.custombind = {
    init: function(element, valueAccessor, allBindingsAccessor, 
                   viewModel, bindingContext) 
    {
        alert($(element).attr('class'));
    }
}

var viewModel = {
    custombind: ko.observable(true)
};
ko.applyBindings(viewModel);

演示JSFiddle