Ko.applyBindings 完全动态创建的项目 jQuery
Ko.applyBindings with fully dynamically created items with jQuery
我在 Ko ViewModel 中使用 jQuery 动态创建了一个嵌套列表。
这个列表可能有无限个孩子,这就是为什么我用 jQuery 而不是直接用 KnockOut 来做。
我的问题是,每个动态创建的子项都具有我需要连接到我的 KnockOut ViewModel 的功能,但我找不到方法。
这是我当前代码的 JSFiddle:http://jsfiddle.net/juandozco/691mqcub/5/
我尝试了什么:
- 尝试将所有按钮添加到一个数组中,然后对该数组执行 foreach,但 运行
ko.applyBindings(ViewModel, DOMElement)
对我不起作用。
- 试图在构建按钮后执行
ko.applyBindings
,这不起作用,因为 DOMElement 尚不存在,所以 Ko 无法执行绑定。
我确实将 click
事件绑定到我的按钮,jQuery,我给每个按钮一个 class 然后做了:$(document).on("click","btnClass",function(){//code});
但我相信应该有更好的方法来做到这一点。
关于如何做到这一点有什么建议吗?或者有另一种或更清洁的方法吗?
我在 Ko ViewModel 中使用 jQuery 动态创建了一个嵌套列表。这个列表可能有无限个孩子,这就是为什么我用 jQuery 而不是直接用 KnockOut 来做。
这正是 knockout templates 存在的原因。您可以使用无限组织元素 children 并组织模板以递归呈现。
我的问题是,每个动态创建的子项都具有我需要与我的 KnockOut ViewModel 连接的功能,但我找不到方法。
使用模板
[...] 我尝试了什么:[...]
尽量不要将 UI 与模型属性混用。在这种情况下,最好将可观察属性添加到数据数组中的项目,并像往常一样将其与 knockout 一起使用。该模板与常规 HTML 绑定具有相同的效果,因此递归应该不是问题(我在过去使用 KO 模板实现了您所要求的递归元素)。
问候
我在 Ko ViewModel 中使用 jQuery 动态创建了一个嵌套列表。 这个列表可能有无限个孩子,这就是为什么我用 jQuery 而不是直接用 KnockOut 来做。
我的问题是,每个动态创建的子项都具有我需要连接到我的 KnockOut ViewModel 的功能,但我找不到方法。
这是我当前代码的 JSFiddle:http://jsfiddle.net/juandozco/691mqcub/5/
我尝试了什么:
- 尝试将所有按钮添加到一个数组中,然后对该数组执行 foreach,但 运行
ko.applyBindings(ViewModel, DOMElement)
对我不起作用。 - 试图在构建按钮后执行
ko.applyBindings
,这不起作用,因为 DOMElement 尚不存在,所以 Ko 无法执行绑定。
我确实将 click
事件绑定到我的按钮,jQuery,我给每个按钮一个 class 然后做了:$(document).on("click","btnClass",function(){//code});
但我相信应该有更好的方法来做到这一点。
关于如何做到这一点有什么建议吗?或者有另一种或更清洁的方法吗?
我在 Ko ViewModel 中使用 jQuery 动态创建了一个嵌套列表。这个列表可能有无限个孩子,这就是为什么我用 jQuery 而不是直接用 KnockOut 来做。
这正是 knockout templates 存在的原因。您可以使用无限组织元素 children 并组织模板以递归呈现。
我的问题是,每个动态创建的子项都具有我需要与我的 KnockOut ViewModel 连接的功能,但我找不到方法。
使用模板
[...] 我尝试了什么:[...]
尽量不要将 UI 与模型属性混用。在这种情况下,最好将可观察属性添加到数据数组中的项目,并像往常一样将其与 knockout 一起使用。该模板与常规 HTML 绑定具有相同的效果,因此递归应该不是问题(我在过去使用 KO 模板实现了您所要求的递归元素)。
问候