我使用KnockoutJS并有一个主视图和视图模型。我想一个对话框(jQuery UI一)弹出与另一个视图,一个单独的子视图模型绑定到。
对话框内容的HTML是使用AJAX检索的,所以我想能够调用ko.applyBindings一旦请求完成,我想绑定子视图模型只是通过对话框div中的ajax加载的HTML部分。
ko.applyBindings接受第二个参数,它是一个用作根的DOM元素。
这将让你做类似的事情:
<div id="one"> <input data-bind="value: name" /> </div> <div id="two"> <input data-bind="value: name" /> </div> <script type="text/javascript"> var viewmodelA = { name: ko.observable("Bob") }; var viewmodelB = { name: ko.observable("Ted") }; ko.applyBindings(viewmodelA,document.getElementById("one")); ko.applyBindings(viewmodelB,document.getElementById("two")); </script>
因此,您可以使用此技术将viewmodel绑定到您加载到对话框中的动态内容。总的来说,你只是想小心不要在相同的元素上多次调用applyBindings,因为你会得到多个事件处理程序。