具有 knockout.js 的自定义绑定处理程序内的显式设置值绑定处理程序
Explicity set value binding handler inside a custom binding handler with knockout.js
我正在尝试让可观察对象 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 }
);
}
}
}
我正在尝试让可观察对象 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 }
);
}
}
}