Custom Binding Handlers With Knockout and RequireJS

bindinghandlers, knockout.js, requirejs

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');

Problem

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,

Original source