How to stop knockout.js bindings evaluating on child elements

后端 未结 2 923
春和景丽
春和景丽 2020-12-15 06:24

Using knockout, when you call ko.applyBinding(viewModel, \"divId\") it does a recursive binding down through the children of the element you bound to (\"divId\"

2条回答
  •  -上瘾入骨i
    2020-12-15 06:55

    There are several ways that you can go on this one. Typically, you would add multiple "sub" view models to a main view model and then use the with binding on the various areas with the actual view models to bind against them.

    It is possible to technically do what you are after. You can create a custom binding that tells KO that it will handle binding the children itself. It would look like:

    ko.bindingHandlers.stopBindings = {
        init: function() {
            return { controlsDescendantBindings: true };
        }  
    };
    

    When you place this on an element, then KO will ignore the children. Then, you could call ko.applyBindings on a child of this element with a different view model.

    Sample: http://jsfiddle.net/rniemeyer/tWJxh/

    Typically though, you would use multiple view models underneath a main view model using the with binding.

提交回复
热议问题