When you create a custom binding delegation as a best practice, you should always pass all the init and update arguments to the internal links, because you can never know what parameters the internal binding uses:
ko.bindingHandlers.placeholderValue = { init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) { $(element).placeholder(); ko.bindingHandlers.value.init(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext); }, update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) { ko.bindingHandlers.value.update(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext); } };
You have an exception because init uses the allBindingsAccessor parameter for the value allBindingsAccessor , but since you did not pass this, an exception is thrown.
source share