KnockoutJS:将if绑定封装在自定义绑定中
KnockoutJS: Wrapping the if binding in a custom binding
我目前正在阅读使用Knockout创建自定义绑定的文档,我可以理解这个概念,但在实践中应用它时遇到了困难。
具体来说,我想为if绑定提供一个slideUp/slideDown jQuery动画。然而,我遇到了麻烦,只是让KO"看到"我的自定义绑定。如果能指出关于扩展if绑定的正确方向,将不胜感激。
附加说明:
我在这里使用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"绑定,只按原样显示我的模板。
template
绑定的值是该绑定的选项,而不是它们自己的单独绑定。因此,template
绑定本身并不知道您的slidingIf
绑定。
您可能需要单独使用slidingIf
绑定,或者为执行动画的template
绑定编写包装器。
我试过了,但发现我的"内部"绑定失败了,所以我做了这个更改:
return ko.bindingHandlers['if']['update'].apply(this, Array.prototype.slice.call(arguments));
相关文章:
- 自定义控件中的双向绑定在SAPUI5中不起作用
- jquery数据表的自定义ko绑定
- 使用自定义数据属性或将数据绑定到处理程序来处理事件
- ListView的ItemTemplate内的自定义HtmlControl的数据绑定失败
- css绑定中的自定义类名
- 在 aurelia 中使用 repeat.for 绑定自定义元素的正确方法是什么
- 挖空绑定自定义组件,使其不与中心视图模型冲突
- 如何强制挖空以重新绑定自定义绑定
- 挖空视图模型绑定未定义错误
- 如何在 AngularJS 中绑定自定义事件
- Ko_selectize数组对象绑定未定义
- 无法绑定自定义元素
- 视图绑定未定义
- 在jQuery中绑定自定义事件时触发代码
- 如何在KendoUI上动态绑定列定义
- 材质角度复选框绑定自定义输入复选框
- 如何使用jQuery绑定自定义事件的函数
- 使用敲除绑定自定义事件
- 指令绑定未定义
- 从元素中解绑定自定义函数