Knockout.js 如何动态创建绑定

Knockout.js 如何动态创建绑定,knockout.js,Knockout.js,我想从dom中已有的数据创建一个动态视图模型。我想在我的页面中引入Knockout,而不必从头开始。我有一个包含数据的无序列表,我想从中创建viewmodel 例如: <ul> <li id="1">name1 <span data-bind="text:nbClicked"></span></li> <li id="2">name2 <span data-bind="text:nbClicked">&l

我想从dom中已有的数据创建一个动态视图模型。我想在我的页面中引入Knockout,而不必从头开始。我有一个包含数据的无序列表,我想从中创建viewmodel

例如:

<ul>
  <li id="1">name1 <span data-bind="text:nbClicked"></span></li>
  <li id="2">name2 <span data-bind="text:nbClicked"></span></li>
</ul>
    名称1 名称2

我的问题是html是在服务器端生成的,我想用KO处理事件。有没有一种方法可以为我列表中的每个元素动态构建上下文?

我也有点困惑于您到底想做什么,但是您可以为各个DOM元素应用单独的视图模型。
ko.applyBindings
将特定节点作为单独的参数:

ko.applyBindings({
    nbClicked: 'hello 1'
}, document.getElementById('1'));

ko.applyBindings({
    nbClicked: 'hello 2'
}, document.getElementById('2'));

这个问题不清楚(而且你的HTML是无效的)。请用一个完整的例子解释你有什么以及你期望的行为。你是说你不能在后端更改HTML吗?不确定KO能否处理这些情况“我列表中每个元素的上下文”?你是说每个
  • 都有不同的视图模型吗?这个动态生成的viewmodel将做什么?如果不知道您使用的是什么属性,您就不能编写很多交互。@Tyrsius:我列表中的每个项目都应该有自己的视图模型,nbClicked属性应该有自己的单击次数。每个项目都被单击过。@Dave听起来好像每个项目都有相同的视图模型(从某种意义上说,viewmodel是一个类,而不是一个实例)。如果它们是不同的viewmodel,它们有什么不同?