knockout.jsrequirejsbindinghandlers

Custom Binding Handlers With Knockout and RequireJS


I'm having an issue applying custom binding handlers when using knockout with requireJS. Basically, in the past I've included a global binding-handler js file that contains all my custom bindings. Now that I'm using requireJS to enforce dependencies, I'm not sure how to access these custom bindings.

I used to do create the global functions with

function KOCustomBindings() {
// Custom Bindings
ko.bindingHandlers.returnKey = {
//handler code
}
}

Now that I'm using require, I feel as if I should have a define statement

define(['jquery', 'knockout'],
    function($, ko)){
// Custom Bindings
return KOCustomBindings;
}
});

However, I don't believe the bindings will execute unless specifically called, perhaps in a shim? Does anyone have any ideas on this?

Thanks for your help,


Solution

  • Since custom bindings modify the ko object, they only need to be loaded once, and their modules do not need to return anything. If you have a main/entry/app section as the first step in your app, simply requiring your custom bindings and extenders is all you need to do.

    define(['jquery', 'knockout'], function($, ko)){
        // Custom Bindings
        ko.bindingHandlers.returnKey = { ... }
    
        //NO return needed
    });
    

    Then, in your startup section, just

    require('lib/custom-ko-bindings');