我想使 Observable FirstName
到像value
元素上的默认绑定。由于某种原因,ko.bindingHandlers.value.init
下面的内容不起作用。当我更新文本框时,它不会在属性中反映出来,但是,如果我value
在元素上手动设置绑定,它将很好地工作。
的HTML
<td class="text-center text-nowrap">
@Html.TextBoxFor(q => q.Number, new { data_bind = "dynamicFormList: { observable: true, value: FirstName }" })
</td>
处理程序
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);
}
}
}
你不能像这样调用绑定处理程序,但是applyBindingsToNode
可以使用一种方法(由于某种原因未记录)可以使用:
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 }
);
}
}
}