I am trying to get the observable FirstName
to take like the default value
binding on the element. For some reason the ko.bindingHandlers.value.init
below doesnt work. When I update the textbox it doesnt refelect in the property, however if I manually set the value
binding on the element it works fine.
HTML
<td class="text-center text-nowrap">
@Html.TextBoxFor(q => q.Number, new { data_bind = "dynamicFormList: { observable: true, value: FirstName }" })
</td>
Handler
ko.bindingHandlers.dynamicFormList = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
var values = ko.utils.unwrapObservable(valueAccessor());
if (values.observable && values.value) {
ko.bindingHandlers.value.init(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext);
}
}
}
You can't invoke binding handlers like that, but there is a method (for some reason undocumented) called applyBindingsToNode
that you can use:
ko.bindingHandlers.dynamicFormList = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
var values = ko.utils.unwrapObservable(valueAccessor());
if (values.observable && values.value) {
ko.applyBindingsToNode(
element,
{ value: values.value }
);
}
}
}