如何在运行时创建不带数据属性的挖空数据绑定



是否可以仅从javascript创建挖空绑定,即无需编写自定义html属性?

我非常坚持我们现有的标记,无法添加 KNOCKOUT .js 依赖的data-bind等(html 是以编程方式生成的,无法访问渲染管道,请假设我已经用尽了我的选择来尝试:)

我暂时追求的一个想法是在调用ko.applyBindings之前在运行时添加data-bind属性。有没有首选方法?我也会接受一个替代的、有充分文档记录的/流行的/稳定的框架,如果它也实现了类似于 knockout 的绑定.js if/visible .

Knockout 3.0(即将发布,现在处于候选版本中)开辟了更多与绑定过程交互的方式,例如预处理节点和动态生成绑定的能力。看看Knockout.Punches,看看一些可能的例子。在此和已经提到的内容(如不显眼的和类绑定提供程序)之间,使用您坚持使用的任何标记应该没有问题。

可能还值得指出的是,KNOCKOUT有一个applyBindingsToNode函数,如果你想要完全控制,它会接受绑定的JSON对象,尽管它不会将绑定应用于后代元素。

Knockout 允许我们创建自定义绑定提供程序,我发现有几个库可以帮助您做到这一点

你可以在这里找到它们:

一个根本不使用 DOM 的:

https://github.com/tobio/knockout.unobtrusivebindingprovider

一种使用另一种方法:

https://github.com/rniemeyer/knockout-classBindingProvider

最后,如果它们都不适合您的需求,您可以使用 jQuery 修改 DOM,然后对其调用绑定......

查看"进一步技术"下的淘汰文档中的"不显眼的事件处理"部分。

最新更新