我目前正在查看使用 Knockout 创建自定义绑定的文档,我可以掌握这个概念,但在实践中应用它时遇到了麻烦。
具体来说,我想为 if 绑定提供一个 slideUp/slideDown jQuery 动画。但是,我无法让 KO “看到”我的自定义绑定。如果绑定将不胜感激,请指出关于扩展的正确方向。
补充笔记:
我从这里使用 KO 外部模板引擎,如下所示:
<!-- ko template: { name: 'SummaryBox', if: expanded } --><!-- /ko -->
我创建了一个非常基本的自定义绑定来包裹默认的“if”:
ko.bindingHandlers['slidingIf'] = {
init: function(element, valueAccessor, allBindingsAccessor, context) {
return ko.bindingHandlers['if']['init'](element, valueAccessor, allBindingsAccessor, context);
},
update: function(element, valueAccessor, allBindingsAccessor, context) {
return ko.bindingHandlers['if']['update'](element, valueAccessor, allBindingsAccessor, context);
}
};
ko.virtualElements.allowedBindings['slidingIf'] = true;
但是当我用这个替换之前的绑定时,
<!-- ko template: { name: 'SummaryBox', slidingIf: expanded } --><!-- /ko -->
该模板基本上忽略了“slidingIf”绑定,只是按原样显示我的模板。