1

所以我正在使用 Knockout 自定义绑定,并且我有以下代码:

<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

4

1 回答 1

1

虽然这在文档中没有明确说明,但所有自定义绑定都应该在调用之前ko.applyBindings定义。

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

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

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

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

演示JSFiddle

于 2013-09-18T19:37:11.310 回答