gpt4 book ai didi

knockout.js - 将自定义绑定(bind)的值传递给自定义绑定(bind)中添加的 DOM 元素

转载 作者:行者123 更新时间:2023-12-04 02:53:00 33 4
gpt4 key购买 nike

我正在尝试使用 knockoutjs 自定义绑定(bind)来创建组件。这可能不是一个好主意,如果有其他方法可以做同样的事情,我愿意接受其他选择。

想法是为元素设置自定义绑定(bind),以便根据传递给绑定(bind)的数据填充元素内容。

例如(在 jade 模板中),我会写:

div(data-bind="keyValueEditor: $data.somePropertyHoldingSomeData")

我有以下(针对问题进行了简化)自定义绑定(bind):

ko.bindingHandlers.keyValueEditor = {
init: function ( element, valueAccessor ) {
var value = valueAccessor();

var valueUnwrapped = ko.unwrap( value );

$( "<span data-bind='text: theDataThatWasPassedToTheBinding.value'/>" ).appendTo( element );
}
},
update: function ( element, valueAccessor ) {
}
};

此处 value 是一个可观察对象,我想使用 text 绑定(bind)将其绑定(bind)到跨度内容。我的问题是我不知道要在 theDataThatWasPassedToTheBinding 中放入什么,所以它等于作为绑定(bind)值传递的 $data.somePropertyHoldingSomeData

我试过:

$( "<span data-bind='text: " + valueAccessor().value + "'/>" ).appendTo( element );

$( "<span data-bind='text: " + ko.unwrap( valueAccessor() ).value + "'/>" ).appendTo( element );

这可能吗?

最佳答案

你可以使用函数
ko.applyBindingsToNode(节点, 绑定(bind), viewModel, bindingAttributeName)

ko.bindingHandlers.keyValueEditor = {
init: function ( element, valueAccessor )
{
var somePropertyHoldingSomeData = valueAccessor();
var span = $( "<span>" );
span.appendTo(element);
ko.applyBindingsToNode(span[0], {text: somePropertyHoldingSomeData.value})
}
}

JSFiddle DEMO

关于knockout.js - 将自定义绑定(bind)的值传递给自定义绑定(bind)中添加的 DOM 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19613468/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com