既存のバインディング、つまり Knockout に組み込まれている "with" または "foreach" バインディングをラップするカスタム バインディングを作成しようとしています。
残念ながら、そうすると次のエラーが発生します: Uncaught TypeError: Cannot call method 'createChildContext' of undefined
from knockout-latest.debug.js:3060 (この問題はバージョン 2.1.0 でも発生します)。
Google Chrome 21.0.1180.57で jsFiddleの例外を再現しました。
カスタム バインディングは、次のように簡単に定義されます。
ko.bindingHandlers.myWith = {
init: function(element, valueAccessor, allBindings, viewModel) {
// do things
return ko.bindingHandlers.with.init(element, valueAccessor,
allBindings, viewModel);
},
update: function(element, valueAccessor, allBindings, viewModel) {
return ko.bindingHandlers.with.update(element, valueAccessor,
allBindings, viewModel);
}
};
この記事で説明されているように、既存のバインディングを上記の形式の単純なハンドラーで「ラップ」できることが期待されます。