繁体   English   中英

具有 knockout.js 的自定义绑定处理程序内的显式设置值绑定处理程序

[英]Explicity set value binding handler inside a custom binding handler with knockout.js

我试图让 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 }
            );
        }
    }
}

小提琴: https://jsfiddle.net/thebluenile/12agb3x9/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM