我在DOM中有元素的自定义绑定:
<div data-bind="customBinding">
<div class="for-view" data-bind="text: Property"></div>
<div class="for-edit" data-bind="childBinding"></div>
</div>
在customBinding调用childBinding时有没有办法?它会像这样说起来:
if <$('.for-edit') element has binding of type childBinding>
<process childBinding first> //this part is a problem
<continue customBinding>
我的方案与内联编辑有关。 customBinding负责设置内联编辑,添加基于子元素类的显示/隐藏绑定等。 我遇到的问题是现在我有一个自定义的childBinding来创建包装器。如果在customBinding之后发生了childBinding,那么我就有问题了。我需要在customBinding期间调用childBinding,然后停止dedent子绑定。
答案 0 :(得分:1)
我想这是可能的,无论如何使用Knockout自定义绑定,您可以完全控制何时调用子绑定。我要customBinding
首先将其称为子绑定,例如:
ko.bindingHandlers['customBinding'] = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
// apply bindings to child first
ko.applyBindingsToDescendants(bindingContext, element);
// ... Process Custom binding
return { 'controlsDescendantBindings': true };
}
};
然而,为什么你会为同一件事有两个不同的绑定,这只会让事情变得更难。为什么不将所有逻辑放在customBinding
。
ko.bindingHandlers['customBinding'] = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
$(element).find('.for-edit').each(function (i, x) {
// apply child binding logic
});
// ... Process Custom binding
}
};
希望这有帮助。