Does afterRender work with Knockout components?

后端 未结 4 1573
小鲜肉
小鲜肉 2020-12-05 02:40

afterRender works with template bindings, but after converting my templates to components, there does not seem to be any way to use afterRender. I

4条回答
  •  既然无缘
    2020-12-05 03:34

    Make a new binding, like so

    ko.bindingHandlers.initBinding = {
    init: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
        debugger
        if (valueAccessor() && valueAccessor().afterRender && bindingContext.$data) {
            valueAccessor().afterRender(bindingContext.$data);
        }
    },
    update: function (element, valueAccessor, allBindings, viewModel, bindingContext) {
        }
    };
    
    export default ko.bindingHandlers.initBinding
    

    You don't need the export if you're not using ES6(babel etc).

    Then in your component html, you can do something like this

    Loaded

    And in your component model

    class staffDirectory {
    
        constructor() {
            console.log('staff directory loaded');
        }
    
        afterRender() {
            console.log('afterRender called');
        }
    
    }
    
    export default staffDirectory;
    

提交回复
热议问题