gpt4 book ai didi

knockout.js - 我可以在自定义绑定(bind)中动态绑定(bind)元素吗?

转载 作者:行者123 更新时间:2023-12-02 21:53:40 26 4
gpt4 key购买 nike

有没有办法从自定义绑定(bind)内部绑定(bind)元素?例如,我有自定义绑定(bind)并将其绑定(bind)到可观察的项目数组:

var someArrayOfItems = ko.observableArray(['item1', 'item2', 'item3']);
...
<div data-bind="myBinding: someArrayOfItems"></div>

现在我希望 myBinding 列出它绑定(bind)到的 div 元素内的“someArrayOfItems”中的所有元素:

<ul data-bind="foreach: someArrayOfItems">
<li>
<span data-bind="text: $data"></span>
</li>
</ul>

是否可以使用自定义绑定(bind)进行此类操作?感谢您的帮助。

最佳答案

您可以使用函数ko.applyBindingsToNode动态添加绑定(bind)到元素。

就您而言,您还需要使用适当的"template"填充内容。

例如,您可以执行以下操作:

ko.bindingHandlers.myBinding = {
init: function(element, valueAccessor) {
var ul = document.createElement("ul"),
data = valueAccessor();

//append a new ul to our element
element.appendChild(ul);

//could use jQuery or DOM APIs to build the "template"
ul.innerHTML = "<li><span data-bind='text: $data'></span></li>";

//apply foreach binding to the newly created ul with the data that we passed to the binding
ko.applyBindingsToNode(ul, { foreach: data });;

//tell Knockout that we have already handled binding the children of this element
return { controlsDescendantBindings: true };
}
};

示例:http://jsfiddle.net/rniemeyer/z458E/

关于knockout.js - 我可以在自定义绑定(bind)中动态绑定(bind)元素吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13109455/

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