我正在使用KnockoutJS并具有主视图和视图模型。我想要一个对话框(jQueryUI一个)弹出,而另一个视图绑定到一个单独的子视图模型。
对话框内容的HTML使用AJAX检索,因此我希望能够ko.applyBindings在请求完成后立即调用,并且我希望将子视图模型绑定到对话框div中通过Ajax加载的HTML的一部分。
ko.applyBindings
这实际上可行吗,还是在页面最初加载后调用ko.applyBindings一次时需要加载所有视图和视图模型?
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在同一元素上多次调用,因为您将获得多个事件处理程序。
applyBindings