如何用自定义绑定包装css knockout绑定?

时间:2013-09-19 17:20:56

标签: knockout.js bindinghandlers

我正在尝试创建一个自定义绑定,它将封装一系列css绑定。具体而言,而不是:

data-bind="css: { success: PickInventoryViewModel.ajaxSuccess, fail: PickInventoryViewModel.ajaxFailure, working: PickInventoryViewModel.ajaxWorking }"

我想要这个:

data-bind="ajaxStatus: PickInventoryViewModel"

ajaxStatus绑定将是一个自定义绑定,它将启动相应的css绑定,而不是在我的应用程序中散布此实现细节。但是,css bindingHandler没有init函数,所以我不完全确定如何使这个工作。

我想我可以订阅每个observable并在观察值为ko.bindingHandlers['css'].update时调用true。我考虑的另一个可能的选择是将css绑定注入到html元素并重新绑定节点(我认为这是applyBindingsToNode的本质,如in this fiddle所示。

有没有人有更好的主意?

谢谢, Vinney

1 个答案:

答案 0 :(得分:7)

来自自定义绑定init函数的

ko.applyBindingsToNode(element, { css: { /* stuff */ } });