knockout.js和多个绑定的性能和维护

时间:2013-07-19 16:21:35

标签: knockout.js

我应该将这些绑定组合成一个绑定吗?这会提高性能吗?我也可以在父绑定中显式调用绑定,这样我仍然可以对逻辑进行一些封装。

<div class="game clearfix draggable-active draggable-item" data-bind="
draggableCss: { game: $data }, 
draggableGameHandler : { disabled: (!$data.Matchup || $data.Occupied), disabledDrop: ($data.Disabled() || $data.Occupied) }, 
click: function() { alert('test') }">

1 个答案:

答案 0 :(得分:0)

您当然可以使用绑定处理程序的第三个参数来访问元素上的其他绑定。这是用于optionsTextoptionsValuevalueUpdate等内容的内容,因为它们不是真正的绑定。

所以,如果你有像这样的绑定:

ko.bindingHandlers.draggableGameHandler = {
    init: function(element, valueAccessor, allBindingsAccessor, data, context) {
         var allBindings = allBindingsAccessor();

         //can access allBindings.draggableCss and allBindings.draggableDrop
    },
    update: function(element, valueAccessor, allBindingsAccessor, data, context) {

    }
};

就性能提升而言,这取决于你在做什么。如果你在一个可以共享的多个绑定中重复逻辑/工作,那么你可能会看到一个提升。